Compare commits

..

52 Commits

Author SHA1 Message Date
victorAnumudu fbc805e3c2 missing com added 2024-08-10 21:21:37 +01:00
tokslaw7 02119e5bad Merge branch 'master' of ssh://gitlab.chiefsoft.net/WrenchBoard/WrenchBoardMainSite2025 2024-08-08 03:53:27 +00:00
tokslaw7 6563292217 Run production build 2024-08-08 03:53:13 +00:00
CHIEFSOFT\ameye 14bd0dc556 add sharp 2024-08-07 16:50:12 -04:00
ameye d4acf6eb87 Merge branch 'build-fix-started' of WrenchBoard/WrenchBoardMainSite2025 into master 2024-08-07 17:56:25 +00:00
victorAnumudu 61793d5d0e build fix started 2024-08-07 18:49:29 +01:00
CHIEFSOFT\ameye 63ffaba8f4 Buid in docker file 2024-08-07 02:29:06 -04:00
ameye 6361ad4a02 Merge branch 'chat-support' of WrenchBoard/WrenchBoardMainSite2025 into master 2024-08-06 18:47:59 +00:00
victorAnumudu da96bd6028 chat support added 2024-08-06 18:21:46 +01:00
CHIEFSOFT\ameye eec247d7bb Home text fixed 2024-08-04 17:04:32 -04:00
ameye a41318d0e7 Merge branch 'blog-detail-page' of WrenchBoard/WrenchBoardMainSite2025 into master 2024-08-03 19:29:11 +00:00
victorAnumudu 83e664eab4 blog details page added 2024-08-03 20:20:08 +01:00
ameye e59d96b60d Merge branch 'link-bug-fix' of WrenchBoard/WrenchBoardMainSite2025 into master 2024-08-03 13:13:15 +00:00
victorAnumudu 3399316816 link bug fixed 2024-08-03 14:11:03 +01:00
CHIEFSOFT\ameye 22da27f69b google taged 2024-08-03 08:13:14 -04:00
ameye 119d8d1820 Merge branch 'terms-page' of WrenchBoard/WrenchBoardMainSite2025 into master 2024-08-03 11:24:13 +00:00
victorAnumudu dc3872f8df terms page added 2024-08-03 10:18:52 +01:00
tokslaw7 8dcc1ac5e6 Fixed startup crash 2024-08-03 01:49:29 +00:00
tokslaw7 6032926658 Attempt startup crash fix 2024-08-03 01:32:43 +00:00
CHIEFSOFT\ameye 12e4483bf3 Tag fix 2024-08-02 19:36:17 -04:00
CHIEFSOFT\ameye cce169f0d6 Select page 2024-08-02 15:36:48 -04:00
CHIEFSOFT\ameye bfaebf27a0 App port in config 2024-08-02 15:12:07 -04:00
CHIEFSOFT\ameye bbd9d5be3f APP_PORT=9081 2024-08-02 15:05:49 -04:00
ameye ea7e65ecd2 Merge branch 'bug-link-fix' of WrenchBoard/WrenchBoardMainSite2025 into master 2024-08-02 18:50:12 +00:00
victorAnumudu cfe6517bc8 link fixed 2024-08-02 19:42:03 +01:00
CHIEFSOFT\ameye 6c2f918a88 select features 2024-08-02 14:03:11 -04:00
ameye 94b57bb414 Merge branch 'use-cases' of WrenchBoard/WrenchBoardMainSite2025 into master 2024-08-02 18:01:23 +00:00
victorAnumudu e2463ac6af use case and blog page added 2024-08-02 17:14:41 +01:00
ameye 29310a8da3 Merge branch 'image-change' of WrenchBoard/WrenchBoardMainSite2025 into master 2024-08-01 18:31:26 +00:00
victorAnumudu 360b84f829 image updated and link fixed 2024-08-01 18:43:46 +01:00
ameye c881413b15 Merge branch 'env-files' of WrenchBoard/WrenchBoardMainSite2025 into master 2024-08-01 14:13:51 +00:00
victorAnumudu 7f5716dc99 added env files and favicon 2024-08-01 15:04:04 +01:00
CHIEFSOFT\ameye dcdf3b5816 select features part 2024-08-01 10:03:51 -04:00
ameye 5c31cb017c Merge branch 'services-page' of WrenchBoard/WrenchBoardMainSite2025 into master 2024-07-31 15:56:25 +00:00
victorAnumudu deb5e7518b services page 2024-07-31 16:49:08 +01:00
ameye c218276c51 Merge branch 'about-page' of WrenchBoard/WrenchBoardMainSite2025 into master 2024-07-31 13:58:23 +00:00
victorAnumudu 78eb0378c6 added about page 2024-07-31 14:52:46 +01:00
CHIEFSOFT\ameye c3f9e9859d Tried the header path 2024-07-30 15:35:42 -04:00
ameye ee77ee12b3 Merge branch 'nav-section' of WrenchBoard/WrenchBoardMainSite2025 into master 2024-07-30 19:17:52 +00:00
victorAnumudu 9e72f3d893 added home nav 2024-07-30 19:07:27 +01:00
CHIEFSOFT\ameye 137c309765 fix path 2024-07-30 12:02:41 -04:00
CHIEFSOFT\ameye a51499bf92 blog details 2024-07-30 11:55:47 -04:00
CHIEFSOFT\ameye 8b9dc3f045 axios added 2024-07-30 11:38:21 -04:00
ameye 5fa4f178fc Merge branch 'home-blog-section' of WrenchBoard/WrenchBoardMainSite2025 into master 2024-07-30 15:03:30 +00:00
victorAnumudu f0ccf28fdd added home blog section 2024-07-30 15:32:47 +01:00
CHIEFSOFT\ameye 1cab67cafb about text 2024-07-30 08:22:08 -04:00
CHIEFSOFT\ameye 496977981a about us page 2024-07-30 08:01:50 -04:00
CHIEFSOFT\ameye 045fe85938 Contact us here 2024-07-30 07:40:39 -04:00
CHIEFSOFT\ameye c4b5199ab4 Other links 2024-07-30 07:37:01 -04:00
CHIEFSOFT\ameye c1d2900241 test faq page 2024-07-30 07:09:36 -04:00
CHIEFSOFT\ameye f1534c7ddd new pages 2024-07-30 07:00:33 -04:00
ameye e828b5fd19 Merge branch 'section-addition-two' of WrenchBoard/WrenchBoardMainSite2025 into master 2024-07-30 10:11:34 +00:00
126 changed files with 4288 additions and 329 deletions
+23
View File
@@ -0,0 +1,23 @@
APP_PORT=9081
ESLINT_NO_DEV_ERRORS=true
NEXT_PUBLIC_AUX_ENDPOINT="https://apigate.lotus.g1.wrenchboard.com/en/wrench/api/v1"
NEXT_PUBLIC_USERS_ENDPOINT="https://apigate.lotus.g1.wrenchboard.com/en/wrench/api/v1"
NEXT_PUBLIC_SITE_NAME='WrenchBoard'
NEXT_PUBLIC_DASH_URL='https://dev-users.wrenchboard.com'
NEXT_PUBLIC_DASH_URL_LOGIN="https://dev-users.wrenchboard.com/login?cnt=us"
NEXT_PUBLIC_DASH_URL_SIGNUP="https://dev-users.wrenchboard.com/signup?cnt=us"
NEXT_PUBLIC_ANDROID_APP='https://play.google.com/store/apps/details?id=com.wrenchboard.users'
NEXT_PUBLIC_APPLE_APP='https://itunes.apple.com/us/app/wrenchboard/id1435718367?ls=1&mt=8'
NEXT_PUBLIC_FACEBOOK_LINK='https://www.facebook.com/wrenchboard'
NEXT_PUBLIC_TWITTER_LINK='https://twitter.com/wrenchboard/'
NEXT_PUBLIC_LINKEDIN_LINK="https://www.linkedin.com/company/wrenchboard/"
NEXT_PUBLIC_SUPPORT_EMAIL='support@wrenchboard.com'
NEXT_PUBLIC_SUPPORT_PHONE='404 855-7966'
NEXT_PUBLIC_SUPPORT_PHONE_NG='(+420) 336 476 328'
NEXT_PUBLIC_SUPPORT_US_ADDRESS='Cumberland Pkwy, Atlanta GA 30339'
NEXT_PUBLIC_SUPPORT_NG_ADDRESS='Saka Tinubu Street, Victoria Island Lagos, Nigeria'
#AGENT LINK
NEXT_PUBLIC_AGENT_LINK='https://dev-agents.wrenchboard.com'
+23
View File
@@ -0,0 +1,23 @@
APP_PORT=9081
ESLINT_NO_DEV_ERRORS=true
NEXT_PUBLIC_AUX_ENDPOINT="https://apigate.lotus.g1.wrenchboard.com/en/wrench/api/v1"
NEXT_PUBLIC_USERS_ENDPOINT="https://apigate.lotus.g1.wrenchboard.com/en/wrench/api/v1"
NEXT_PUBLIC_SITE_NAME='WrenchBoard'
NEXT_PUBLIC_DASH_URL='https://dev-users.wrenchboard.com'
NEXT_PUBLIC_DASH_URL_LOGIN="https://dev-users.wrenchboard.com/login?cnt=us"
NEXT_PUBLIC_DASH_URL_SIGNUP="https://dev-users.wrenchboard.com/signup?cnt=us"
NEXT_PUBLIC_ANDROID_APP='https://play.google.com/store/apps/details?id=com.wrenchboard.users'
NEXT_PUBLIC_APPLE_APP='https://itunes.apple.com/us/app/wrenchboard/id1435718367?ls=1&mt=8'
NEXT_PUBLIC_FACEBOOK_LINK='https://www.facebook.com/wrenchboard'
NEXT_PUBLIC_TWITTER_LINK='https://twitter.com/wrenchboard/'
NEXT_PUBLIC_LINKEDIN_LINK="https://www.linkedin.com/company/wrenchboard/"
NEXT_PUBLIC_SUPPORT_EMAIL='support@wrenchboard.com'
NEXT_PUBLIC_SUPPORT_PHONE='404 855-7966'
NEXT_PUBLIC_SUPPORT_PHONE_NG='(+420) 336 476 328'
NEXT_PUBLIC_SUPPORT_US_ADDRESS='Cumberland Pkwy, Atlanta GA 30339'
NEXT_PUBLIC_SUPPORT_NG_ADDRESS='Saka Tinubu Street, Victoria Island Lagos, Nigeria'
#AGENT LINK
NEXT_PUBLIC_AGENT_LINK='https://dev-agents.wrenchboard.com'
+23
View File
@@ -0,0 +1,23 @@
APP_PORT=9081
ESLINT_NO_DEV_ERRORS=true
NEXT_PUBLIC_AUX_ENDPOINT="https://apigate.lotus.g1.wrenchboard.com/en/wrench/api/v1"
NEXT_PUBLIC_USERS_ENDPOINT="https://apigate.lotus.g1.wrenchboard.com/en/wrench/api/v1"
NEXT_PUBLIC_SITE_NAME='WrenchBoard'
NEXT_PUBLIC_DASH_URL='https://users.wrenchboard.com'
NEXT_PUBLIC_DASH_URL_LOGIN="https://users.wrenchboard.com/login?cnt=us"
NEXT_PUBLIC_DASH_URL_SIGNUP="https://users.wrenchboard.com/signup?cnt=us"
NEXT_PUBLIC_ANDROID_APP='https://play.google.com/store/apps/details?id=com.wrenchboard.users'
NEXT_PUBLIC_APPLE_APP='https://itunes.apple.com/us/app/wrenchboard/id1435718367?ls=1&mt=8'
NEXT_PUBLIC_FACEBOOK_LINK='https://www.facebook.com/wrenchboard'
NEXT_PUBLIC_TWITTER_LINK='https://twitter.com/wrenchboard/'
NEXT_PUBLIC_LINKEDIN_LINK="https://www.linkedin.com/company/wrenchboard/"
NEXT_PUBLIC_SUPPORT_EMAIL='support@wrenchboard.com'
NEXT_PUBLIC_SUPPORT_PHONE='404 855-7966'
NEXT_PUBLIC_SUPPORT_PHONE_NG='(+420) 336 476 328'
NEXT_PUBLIC_SUPPORT_US_ADDRESS='Cumberland Pkwy, Atlanta GA 30339'
NEXT_PUBLIC_SUPPORT_NG_ADDRESS='Saka Tinubu Street, Victoria Island Lagos, Nigeria'
#AGENT LINK
NEXT_PUBLIC_AGENT_LINK='https://agents.wrenchboard.com'
+10 -22
View File
@@ -1,23 +1,11 @@
"use client"
import React, { useState } from 'react';
import { Link } from 'react-router-dom';
import logo from '../assets/images/wrenchboard-logo-text.png';
import getConfig from "../../Config/config"; // './../../Config/config'
import Image from 'next/image';
import Link from 'next/link'
function Drawer({ drawer, action }) {
var site = getConfig()[0];
const [itemSize, setSize] = useState('0px');
const [item, setItem] = useState('home');
const handler = (e, value) => {
e.preventDefault();
const getItems = document.querySelectorAll(`#${value} li`).length;
if (getItems > 0) {
setSize(`${43 * getItems}px`);
setItem(value);
}
};
return (
<>
<div
@@ -35,7 +23,7 @@ function Drawer({ drawer, action }) {
</a>
</div>
<div className="offcanvas-brand text-center mb-40">
<img src={logo} alt="WrechBoard" />
<Image width='260' height='57' src={logo} alt="WrechBoard" />
</div>
<div id="menu" className="text-left ">
<ul className="offcanvas_main_menu">
@@ -45,7 +33,7 @@ function Drawer({ drawer, action }) {
className="menu-item-has-children active"
>
<a href="/">Home</a>
<Link href="/">Home</Link>
</li>
<li
@@ -53,10 +41,10 @@ function Drawer({ drawer, action }) {
id="service"
className="menu-item-has-children active"
>
<Link to="/service">Service</Link>
<Link href="/service">Service</Link>
</li>
<li>
<Link to="/about-us">About Us</Link>
<Link href="/about-us">About Us</Link>
</li>
@@ -66,14 +54,14 @@ function Drawer({ drawer, action }) {
id="contact"
className="menu-item-has-children active"
>
<Link to="/contact">Contact</Link>
<Link href="/contact">Contact</Link>
</li>
</ul>
</div>
<div className="offcanvas-social">
<ul className="text-center">
<li>
<a href={process.env.REACT_APP_FACEBOOK_LINK} >
<a href={process.env.NEXT_PUBLIC_FACEBOOK_LINK} >
<i className="fab fa-facebook-f"></i>
</a>
</li>
@@ -90,12 +78,12 @@ function Drawer({ drawer, action }) {
<li>
<a href="#">
<i className="fal fa-envelope"></i>{' '}
{process.env.REACT_APP_SUPPORT_EMAIL}
{process.env.NEXT_PUBLIC_SUPPORT_EMAIL}
</a>
</li>
<li>
<a href="#">
<i className="fal fa-phone"></i> {process.env.REACT_APP_SUPPORT_PHONE}
<i className="fal fa-phone"></i> {process.env.NEXT_PUBLIC_SUPPORT_PHONE}
</a>
</li>
<li>
+8
View File
@@ -0,0 +1,8 @@
import Axios from 'axios';
async function BlogData() {
let response = await Axios.post(`${process.env.NEXT_PUBLIC_AUX_ENDPOINT}/blogdata`);
return await response;
}
export default BlogData;
+12
View File
@@ -0,0 +1,12 @@
import axios from 'axios';
async function ContactData(reqData) {
let formData = new FormData()
for (let value in reqData) {
formData.append(value, reqData[value]);
}
let response = await axios.post(`${process.env.NEXT_PUBLIC_AUX_ENDPOINT}/sitecontact`, reqData);
return response;
}
export default ContactData;
+8
View File
@@ -0,0 +1,8 @@
import Axios from 'axios';
async function FaqData() {
let response = await Axios.post(`${process.env.NEXT_PUBLIC_AUX_ENDPOINT}/faq`);
return await response;
}
export default FaqData;
+24
View File
@@ -0,0 +1,24 @@
import Axios from 'axios';
async function JobsData() {
var callData = [{
"limit": 10,
"page": 1
}];
/*
var res = null;
const getWrenchBoardJobs = () => {
Axios.post("https://dashboard.wrenchboard.com/svs/user/startjoblist", callData).then((response) => {
res = response;
return response;
});
}
*/
let response = await Axios.post(process.env.NEXT_PUBLIC_AUX_ENDPOINT+'/startjoblist', callData);
return await response;
}
export default JobsData;
+212
View File
@@ -0,0 +1,212 @@
// http://172.31.4.19:8000/wordpress-data
//import React from 'react';
import Axios from 'axios';
function UseCaseData() {
// console.log("~~~~~~~~ ameye 009 ~~~~~~~~~");
var res = null;
const getWrenchBoardBlog = () => {
Axios.get("http://10.0.0.52:5101/wp/wrenchboard/", {
headers: {
'Access-Control-Allow-Origin' : '*',
'Access-Control-Allow-Credentials':true,
'crossorigin':true,
'Access-Control-Allow-Methods':'GET,PUT,POST,DELETE,PATCH,OPTIONS',
},
responseType: "json",
}).then((response) => {
console.log(response);
res = response;
// console.log("~~~~~~~~ ameye ~~~~~~~~~");
return response;
// console.log(blogResultData);
});
}
/* return (
<>
Ameye
</>
);
*/
// getWrenchBoardBlog();
//console.log(getWrenchBoardBlog());
//console.log("Ameye got here");
// return blogResultData; // getWrenchBoardBlog();
var res1 = [
{
"id": 78,
"ID": 78,
"post_author": 1,
"post_date": "2018-06-25T18:54:22.000Z",
"post_date_gmt": "2018-06-25T18:54:22.000Z",
"post_content": "Globalization spells danger for the type of jobs that will be available at graduation. The nature of jobs changes so often that it could frustrate for the students. The changes also present new opportunities. Globalization also ensures that job can come anonymously from any part of the world and transaction can be completed privately.\n\nThis is where <a href=\"https://www.wrenchboard.com\">WrenchBoard </a>comes in, rather than focus on your primary education as your source of income, the new economy will look at your skills as this guide. Your question is to self-examine and attributes values to what you have that others need to make their own or goal complete.\n\nUniversity students can earn extra income along with their regular educational and school work by taking part-time tasks online. To get a project up and running there are a lot of components of service that every business goes through and there are those tasks that students can attend to. Students are in best position to do an initial critique of sites, write articles that bear innocence or interest meddling or test an app for a company in beta phase.\n\nThe online nature of the jobs gives the student the necessary flexibility to operate and added the benefit of interacting with people that dont think like them, it is an opportunity for the larger world. It is getting very hard to manufacture excuses for not to be involved with one online job or the other when the opportunities and the capabilities collide. A student should be made aware of the fact that life is going to get busier once the excuse of the school is removed.\n\nThere are many jobs students can easily do online\n<ul>\n \t<li>\tOnline marketing - most students have Facebooks and other social environments with tons of friends or connection. Somebody on this planet needs that profile or demography and will be will to pay for it if there is a way to do so</li>\n \t<li>\nTeaching - being a student also has the benefit of living in environment where you play with commercial tools, somebody have question about those tools you are playing with that they are willing to pay for - for example, student work with expensive robots in labs and an industrial hand may have questions that you can check out in your experiment environment</li>\n \t<li>\nWriting Articles/Blogging -</li>\n \t<li>\nSurveys/Research</li>\n \t<li>Campaigns</li>\n</ul>",
"title": "Propose relevant articles for my site",
"post_excerpt": "",
"post_status": "publish",
"comment_status": "open",
"ping_status": "open",
"post_password": "",
"post_name": "online-jobs-university-students",
"to_ping": "",
"pinged": "",
"post_modified": "2022-01-01T23:29:05.000Z",
"post_modified_gmt": "2022-01-01T23:29:05.000Z",
"post_content_filtered": "",
"post_parent": 0,
"guid": "https://blog.wrenchboard.com/?p=78",
"menu_order": 0,
"post_type": "post",
"post_mime_type": "",
"comment_count": 0,
"meta_value": "wrechboard-sample.jpg"
},
{
"id": 41,
"ID": 41,
"post_author": 1,
"post_date": "2017-11-23T14:05:51.000Z",
"post_date_gmt": "2017-11-23T14:05:51.000Z",
"post_content": "There are different types of online jobs and some pay more money than others do while some typing jobs may need special equipment, education, or training in order to do them. The advantage of an online job is that you can work at any time of the day around your personal schedule. You can even work in the evening or at night.\n\nYour income from an online job will also depend on the kind of job you do, your experience and your skills.\n\n<strong>Price management</strong>\n\nFirstly, you will need to establish the services you will offer your clients and a business essentially succeeds by filling a void or a niche in the market.\n\nEnsure you are familiar with the different online jobs out there as each job category pays differently. The categories of online jobs include Copywriting, SEO copywriting, Content writing, Proofreading, editing, freelance writing, social media marketing and professional blogging. You do not have to work in one field only; you can work in various fields. Research on how much each field pays; this is so you do not sell yourself short and earn less money than you should be earning.\n\nAlways do your best work for every project as the quality of your work will speak for you and you can gauge your prices better while establishing your reputation.\n\nNetworking is also essential both online and in person. You can use social media platforms like LinkedIn to network online. The more you work towards being noticed, the more clients and projects you will get.\n\n<strong>Time management </strong>\n\nWorking an online business means, you will be working from home in most cases and time management is an essential part of working online. Here are a few tips to help you manage your time better with an online job.\n<ul>\n \t<li>Remove all the extra tabs from your web browser, as they can be reminders of the fact that the internet is a vast wormhole of your attention. Open fewer tabs if you want to have a more productive workday.</li>\n \t<li>Remove papers from your desktop as a ton of paperwork on your desktop could discourage you from remaining focused. Ensure you clear your desktop after each workday.</li>\n \t<li>Avoid social media interruptions as social media can hinder your productivity if you do not practice mindfulness. You can set up a specific time to socialize before your workday begins or just before retiring after your workday.</li>\n \t<li>Block any needless distractions because at times pure silence might be all you need to do to enhance your production. Turn your radio, television, or telephone off. Avoid visiting any social media platforms, ignore email notifications, and even close your browser.</li>\n \t<li>Select the best time for you to work; you may find that you are more productive during certain hours of the day. Find out what your optimal time frame is and work during said hours so that you get more work done. Most importantly, ensure you follow your schedule strictly.</li>\n</ul>\n&nbsp;",
"title": "Share my writeup on your social site",
"post_excerpt": "",
"post_status": "publish",
"comment_status": "open",
"ping_status": "open",
"post_password": "",
"post_name": "time-price-management-working-online-job",
"to_ping": "",
"pinged": "",
"post_modified": "2022-01-01T23:29:35.000Z",
"post_modified_gmt": "2022-01-01T23:29:35.000Z",
"post_content_filtered": "",
"post_parent": 0,
"guid": "https://blog.wrenchboard.com/?p=41",
"menu_order": 0,
"post_type": "post",
"post_mime_type": "",
"comment_count": 0,
"meta_value": "share-my-content.jpg"
},
{
"id": 39,
"ID": 39,
"post_author": 1,
"post_date": "2017-11-23T14:04:49.000Z",
"post_date_gmt": "2017-11-23T14:04:49.000Z",
"post_content": "Content syndication involves methods of content republication on other websites so you can reach a wider audience. Syndication of your content is a great way to enhance your brand awareness and your reach, direct traffic to your article, and build links. The internet is vast and it is not reasonable to assume that everyone you want to reach will read your content simply because you published it on your own site. Syndicating your content gets it to a different audience who might have never known it was there in the first place. Content syndication is a good and cheap way to further your content. It is a content marketing strategy. There are 4 kinds of content syndication you should know of:\n<ol>\n \t<li><strong>Syndicating content (3rd party) on your website </strong></li>\n</ol>\nPublishers can ask different websites for permission to display their content on your website or blog. Your site should have roughly 10% syndicated content ideally. Even though it might be unoriginal, it is always good to feature useful content that your readers will find beneficial and worth reading. It is difficult to find great authors committed to writing content for you when you run a website or blog with multiple authors. Ask an influencer on whether you can feature their existing content as a reasonable resolution. Syndicated content diversifies your site content instantly by highlighting something valuable and new to your target audience.\n<ol start=\"2\">\n \t<li><strong>Syndicating your content on other blogs or websites</strong></li>\n</ol>\nPublishers can syndicate their content to be displayed on another partner website or sites. You can either create content that is not original for your partner who will just be republishing your content. Alternatively, you can agree on a split which both sides find acceptable i.e. you can give them syndicated content for one month and produce original content the next month. If the agreement calls for 1-4 posts monthly, one of them must at least be original.\n<ol start=\"3\">\n \t<li><strong>Publish your content on websites syndicating their content</strong></li>\n</ol>\nAnother way to syndicate your content is by contributing regularly to websites already syndicating their content. Think of it this way, if you are publishing your content for a specific website on a regular basis and they are content syndicators, their content would also end up on other significant partner websites.\n<ol start=\"4\">\n \t<li><strong>Self-service syndication</strong></li>\n</ol>\nPublishers are also able to syndicate their own content with Medium as a great place to start with this endeavor. Medium allows you to import your already existing content from the internet edit, format, and publishing it. It allows you to run your own publications using minimal effort. LinkedIn is another platform you can use to republish your own website content so it reaches a bigger audience.\n\nYou have tools available at your disposal that can help you get your content to a wider target audience while enhancing traffic to your website, establishing a stronger following, and developing your reputation.",
"title": "Give feedback on my website or app ",
"post_excerpt": "",
"post_status": "publish",
"comment_status": "open",
"ping_status": "open",
"post_password": "",
"post_name": "use-syndication-techniques-promote-articles-online",
"to_ping": "",
"pinged": "",
"post_modified": "2022-01-02T22:42:09.000Z",
"post_modified_gmt": "2022-01-02T22:42:09.000Z",
"post_content_filtered": "",
"post_parent": 0,
"guid": "https://blog.wrenchboard.com/?p=39",
"menu_order": 0,
"post_type": "post",
"post_mime_type": "",
"comment_count": 0,
"meta_value": "test-site-app.jpg"
},
{
"id": 37,
"ID": 37,
"post_author": 1,
"post_date": "2017-11-23T14:03:39.000Z",
"post_date_gmt": "2017-11-23T14:03:39.000Z",
"post_content": "<strong>Paying mind to similarity index and why ignoring it could have serious repercussions&nbsp; </strong>\n\nThe similarity index is a term you should be familiar with as an online writer. It is defined as the composite number that is highlighted after matching two texts to determine how similar the content from both pieces is. It is typically displayed as a percentage and the displayed number measures the percentage of your article that the program found the matching text for. This is regardless of proper citation in your work or lack thereof.\n\nIf the similarity index is high this could mean the writer has quoted various other works to a large extent even if it is legitimate.\n\nIt is understandable that you will want to offer quality content for search engines in terms of consideration and indexation and this can lead you to weed your indexable content down. You may also be worried that search engines will not be able to comprehend your content due to existing similar pages because of things like product variations. It will be unwise for you to rush into a decision that could damage your SEO in the process of trying to make search engines happy while destroying your organic visibility in the process.\n\nYou can make use of canonical tags to instruct crawling search engines of the representative alternatives of similar or duplicate content. You just have to place these tags within your source code head section. Canonical tags are very effective in dealing with similar or duplicate content. The easiest way to determine whether you have similar content on your website is to review the site manually while addressing sections of the site appearing to have different URLs but similar content. Take some of the URLs and use tools such as Similar Page Checker or simply review the site for any similar content using Siteliner.\n\nYou may also want to consider consolidating multiple pages into one or expanding certain pages if you have multiple pages that appear to be similar. For example, if you have a site with two distinct pages for different but related topics but the information is the same on both these pages, you may either expand each page further to encompass original content about each topic or merge both pages into one about both topics.\n\nSimilar content can present an issue if not addressed:\n\nYour website will suffer in terms of ranking and you may end up losing traffic. Both losses typically originate from 2 main issues\n\n-&nbsp;&nbsp;&nbsp; Search engines rarely show multiple options of similar content in order to give users an optimum search experience. They will, therefore, be forced to select the best version which will be shown as the best result diluting visibility of websites with similar or duplicate content.\n\n-&nbsp;&nbsp;&nbsp; Equity of links will also be diluted further because other websites will have to choose the best option from the duplicates. As opposed to all the inbound links directing to one content piece, they will link to several pieces distributing the equity of the links among these duplicates. Inbound links are considered a ranking factor so they can affect the search visibility of certain pieces of content.\n\nThe overall result is that the piece of content will not get the search visibility it deserves.\n\n&nbsp;",
"title": "Share my product with your friends",
"post_excerpt": "",
"post_status": "publish",
"comment_status": "open",
"ping_status": "open",
"post_password": "",
"post_name": "paying-mind-similarity-index",
"to_ping": "",
"pinged": "",
"post_modified": "2022-01-02T22:42:29.000Z",
"post_modified_gmt": "2022-01-02T22:42:29.000Z",
"post_content_filtered": "",
"post_parent": 0,
"guid": "https://blog.wrenchboard.com/?p=37",
"menu_order": 0,
"post_type": "post",
"post_mime_type": "",
"comment_count": 0,
"meta_value": "share-product.jpg"
},
{
"id": 35,
"ID": 35,
"post_author": 1,
"post_date": "2017-11-23T14:02:54.000Z",
"post_date_gmt": "2017-11-23T14:02:54.000Z",
"post_content": "The internet is a vast source of information and you can use this information to improve and expand your skill set. You always stand to benefit by adding some extra skills to your CV. The internet is one of the best areas to look if you want to enhance your knowledge base and your skill set in an effort to impress your possible employers. There are so many ways to use the internet to gain extra technical skills\n\n<strong>Design</strong>\n\nThe internet is jam-packed with various online programs that people use for photo editing and graphic design for their websites and blogs. Such design skills must be stated in your CV if they will be relevant to the position you are applying for in any company. You can easily download the relevant design programs or apps from the internet and use your free time to sharpen your design skills while racking up your design portfolio. You may land a position in a good design agency if you have some good examples of your design work.\n\n<strong>Social media</strong>\n\nSocial media is another way that the internet has proven useful in that it can be used in more ways than one. Once you find a way to use social media to your advantage, this will be a valuable asset because lots of organizations are currently looking for social media skills when looking to hire new staff. Businesses have realized the benefit of using social media marketing in reaching out to a bigger audience. Think of ways to boost your follower base via your own social media pages like Instagram, Twitter, or Facebook. Such platforms and more like Snapchat or LinkedIn are free to download and easy to use plus there is a lot you can learn in terms of using your social media feed or platforms to attract followers which in itself is a form of marketing.\n\n<strong>IT skills</strong>\n\nThis is one of the obvious skills that one can polish online or on their computer. More businesses are being geared towards a digital direction and employers want to know they are hiring an applicant(s) with strong IT skills. This means you have to know how to use various programs and software to create different types of documents. Showing that you are highly proficient in computer applications and operation will do you justice when applying for different jobs or even starting your own business.\n\n<strong>Online Courses</strong>\n\nYou can now get plenty of qualifications from the comfort of your home as long as you have a computer and a strong internet connection. Find a free course that would be relevant or helpful to you, sign up, and you can begin studying as soon as immediately. There are many skills you can study online with these courses and you may add an impressive qualification to your resume. The advantage of online courses is that you can do them in coordination with your current schedule meaning you still get to earn while you study.\n\n<strong>Languages</strong>\n\nA second language also looks quite impressive on your CV as bilingual employees show to be quite useful if an employers business trades in an international market. You can use apps like Duolingo or sign up for an online course to learn a new language. A second language might really help you get work experience in foreign countries.",
"title": "Exhibit your skills, somebody needs it",
"post_excerpt": "",
"post_status": "publish",
"comment_status": "open",
"ping_status": "open",
"post_password": "",
"post_name": "using-internet-expand-technological-skill-set",
"to_ping": "",
"pinged": "",
"post_modified": "2022-01-02T22:44:39.000Z",
"post_modified_gmt": "2022-01-02T22:44:39.000Z",
"post_content_filtered": "",
"post_parent": 0,
"guid": "https://blog.wrenchboard.com/?p=35",
"menu_order": 0,
"post_type": "post",
"post_mime_type": "",
"comment_count": 0,
"meta_value": "your-skills.jpg"
},
{
"id": 33,
"ID": 33,
"post_author": 1,
"post_date": "2017-11-23T14:01:30.000Z",
"post_date_gmt": "2017-11-23T14:01:30.000Z",
"post_content": "Anyone can do an online job as long as you have the right set of skills. As your own boss, you will have to do plenty of day-to-day tasks yourself and you will need to practice good judgment on how you do things. This is why you need an effective strategy to help you progress your online career.\n\n<strong>You need the right skills</strong>\n\nAs does any job, you need to have the proper equipment and tools to accomplish things accordingly. This means you will have to invest in a good-quality PC or laptop, subscribe to a dependable ISP, and ensure you have a backup ISP in the event of an emergency. You could even get your own office with a backup computer, a cloud account, or a spare hard drive.\n\n<strong>You need to be dedicated to your career</strong>\n\nThe misconception that you need to go to college to learn all the skills you need to get a job in the outside world is not the case. Of course, you need to update your skills and knowledge to gain a competitive edge over your peers and colleagues. This means that you should always keep learning in order to have an effective online career or job. Read on industry news daily, take some courses to spruce up your skills; you can even go back to school.\n\n<strong>Technical proficiency</strong>\n\nComputer literacy is something you obviously must have when working on an online career. However, in order to progress with your career, you have to be up to date with current software and online tools available to help you be more efficient in your strategy.\n\n<strong>Ensure every project has a contract</strong>\n\nYou do not need something complex that will take you more time to look over when you should be using this time to make money. To start with, you should have a general agreement covering important but basic terms you and your client must agree on. Setting basic terms for each project helps to protect you and inform your clients of how you work. Some of the terms your contract must cover include payment terms and the clients proprietary details etc. If things work in your favor and you show significant growth in your career, you will need a specially crafted contract courtesy of a legal professional.\n\n<strong>Focusing your business</strong>\n\nFocusing the identity of your brand and the caliber of projects you undertake will make things much easier on your part from the marketing process to the design work. Pick one service or even two and take on work falling along those lines then decline the rest. Deciding on the services you intend to specialize in will help you translate this in your brand. Everything on your website should be reworded to suit those specific phrases and keywords and only exhibit this kind of work in your portfolio. Begin producing content centered on these services to display your expertise. This is all a result of marketing and it will direct traffic and new projects in your direction.\n\n&nbsp;",
"title": "Plan and conduct survey with incentives",
"post_excerpt": "",
"post_status": "publish",
"comment_status": "open",
"ping_status": "open",
"post_password": "",
"post_name": "implement-effective-online-career-strategy",
"to_ping": "",
"pinged": "",
"post_modified": "2022-01-02T22:44:57.000Z",
"post_modified_gmt": "2022-01-02T22:44:57.000Z",
"post_content_filtered": "",
"post_parent": 0,
"guid": "https://blog.wrenchboard.com/?p=33",
"menu_order": 0,
"post_type": "post",
"post_mime_type": "",
"comment_count": 0,
"meta_value": "surveys.jpg"
}
];
return res1;
}
export default UseCaseData;
+158
View File
@@ -0,0 +1,158 @@
import React from "react";
import Image from "next/image";
import Design from "../assets/images/design.png";
import Approach from "../assets/images/approach.png";
import Interactive from "../assets/images/interactive.png";
import Mobility from "../assets/images/mobility-approach.png";
import Privacy from "../assets/images/privacy.png";
import Seamless from "../assets/images/seamless.png";
import Security from "../assets/images/security.png";
function ServiceItem(props) {
return (
<div
className={`mt-0 p-4 appie-single-service-2 appie-single-service-about item-${props.index} wow animated fadeInUp`}
data-wow-duration="2000ms"
data-wow-delay={`${props.delay}ms`}
style={{ cursor: "default" }}
>
<div className="icon d-flex justify-content-center align-items-center">
<Image width={'auto'} height={'auto'} src={props.image} alt="icon" />
</div>
<h4 className="title">{props.title}</h4>
<p>{props.description}</p>
</div>
);
}
function AboutTextComponent() {
return (
<>
<div className="container">
<div className="row">
<div className="row">
{servicesContent?.map(({ id, ...item }) => (
<div key={id} className="col-lg-3 col-md-6">
<ServiceItem index={id} {...item} />
</div>
))}
</div>
</div>
</div>
</>
);
}
export default AboutTextComponent;
const servicesContent = [
{
id: 1,
image: Design,
delay: 200,
title: "Engagement",
description:
"We encourage healthy online activities for individuals, groups, or households.",
},
{
id: 2,
image: Mobility,
delay: 400,
title: "Opportunity",
description:
"We prioritize developing a strong opportunity mindset for our users and teamwork.",
},
{
id: 3,
image: Interactive,
delay: 600,
title: "Modern",
description:
"We endeavor to improve our features to catch up to how we can best serve our users.",
},
{
id: 4,
image: Security,
delay: 600,
title: "Security & Safety",
description:
"Healthy communication and privacy are the foundation of all features now and in the future.",
},
// {
// id: 4,
// image: Mobility,
// delay: 200,
// title: "Social Media Management",
// description:
// "Teach youngsters the art of handling social media profiles for small enterprises, cultivating essential marketing and communication abilities while also generating income. Manage tasks, track responses, and stay connected effortlessly. Experience a true mobile lifestyle with WrenchBoard!",
// },
// {
// id: 5,
// image: Seamless,
// delay: 400,
// title: "Inspiring Future Leaders",
// description:
// "By offering a platform for kids to earn, learn, and contribute, WrenchBoard is nurturing the next generation of entrepreneurs, creators, and leaders. We're sowing the seeds of ambition and self-confidence, preparing them for a brighter future.",
// },
// {
// id: 6,
// image: Privacy,
// delay: 600,
// title: "Privacy",
// description:
// "Your privacy matters. WrenchBoard works without data sharing, ensuring your information stays secure. Manage tasks across platforms confidently, enjoying a unified experience that respects your privacy.",
// },
];
const servicesContentBAK = [
{
id: 1,
image: Design,
delay: 200,
title: "Unlocking Potential",
description:
"At WrenchBoard, we believe age should never limit one's ability to pursue their passions and generate income. Our platform offers a variety of categories for kids to explore and turn into profitable endeavors, fostering financial awareness and unlocking their potential for a brighter future.",
},
{
id: 2,
image: Approach,
delay: 400,
title: "Growing Money Mindset",
description:
"We prioritize developing a strong money mindset in Kids. WrenchBoard offers a safe and supportive space for kids to explore their passions, learn new skills, and earn money. By instilling the value of hard work, saving, and investing, we aim to empower the next generation to make informed financial decisions and reach their goals.",
},
{
id: 3,
image: Interactive,
delay: 600,
title: "Realtime Notifications",
description:
"Stay up-to-date with WrenchBoard! Our platform keeps you in the loop with convenient alerts and notifications. Choose your preferred method of receiving updates - email, text, or push notifications - and never miss a beat.",
},
{
id: 4,
image: Mobility,
delay: 200,
title: "Social Media Management",
description:
"Teach youngsters the art of handling social media profiles for small enterprises, cultivating essential marketing and communication abilities while also generating income. Manage tasks, track responses, and stay connected effortlessly. Experience a true mobile lifestyle with WrenchBoard!",
},
{
id: 5,
image: Seamless,
delay: 400,
title: "Inspiring Future Leaders",
description:
"By offering a platform for kids to earn, learn, and contribute, WrenchBoard is nurturing the next generation of entrepreneurs, creators, and leaders. We're sowing the seeds of ambition and self-confidence, preparing them for a brighter future.",
},
{
id: 6,
image: Privacy,
delay: 600,
title: "Privacy",
description:
"Your privacy matters. WrenchBoard works without data sharing, ensuring your information stays secure. Manage tasks across platforms confidently, enjoying a unified experience that respects your privacy.",
},
];
+57
View File
@@ -0,0 +1,57 @@
import React, { useEffect } from 'react';
import logo from '../../assets/images/wrenchboard-logo-text.png';
import StickyMenu from '../../lib/StickyMenu';
import Navigation from '../Navigation';
import getConfig from './../../Config/config'
import { Link } from 'react-router-dom';
import Image from 'next/image';
function HeaderAbout({ action }) {
useEffect(() => {
StickyMenu();
});
var site = getConfig()[0];
return (
<>
<header className="appie-header-area appie-sticky">
<div className="container">
<div className="header-nav-box">
<div className="row align-items-center">
<div className="col-lg-2 col-md-4 col-sm-5 col-6 order-1 order-sm-1">
<div className="appie-logo-box">
<Link to="/">
<Image src={logo} alt="" width="175px" height="38px" loading='eager' />
</Link>
</div>
</div>
<div className="col-lg-6 col-md-1 col-sm-1 order-3 order-sm-2">
<div className="appie-header-main-menu">
<Navigation />
</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"></i> 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"></i>
</div>
</div>
</div>
</div>
</div>
</div>
</header>
</>
);
}
export default HeaderAbout;
+49
View File
@@ -0,0 +1,49 @@
function HeroAbout() {
return (
<>
<div className="appie-about-top-title-area">
<div className="container">
<div className="row">
<div className="col-lg-7">
<div className="appie-about-top-title">
<h2 className="title">Plan and reward accomplishment with ease.</h2>
</div>
</div>
<section className="appie-about-page-area">
<div className="container">
<div className="row">
{/* col-lg-8 */}
<div className="col-12">
<div className="appie-about-page-content">
<h3 className="title">
We Empower Reward for Achievements
</h3>
<p>
WrenchBoard is the platform for planning and rewarding accomplishments for individuals and parents. Parents can set up family accounts to oversee their children&#39;s activities and earnings.
</p>
<p>
At WrenchBoard, we believe in the power of motivating through rewards. As children complete projects, tasks, or chores and earn rewards, children also gain financial, time management, and valuable execution skills that enhance the joy of personal growth.
</p>
<p>
WrenchBoard is more than just a platform for rewards; it fosters holistic growth in children, and WrenchBoard prioritizes safety above all. We implement strict guidelines to ensure age-appropriate tasks and interactions, providing a worry-free space for kids and their guardians.
{/*WrenchBoard prioritizes safety above all. Parents can set up family accounts to oversee their children's activities and earnings. We implement strict guidelines to ensure age-appropriate tasks and interactions, providing a worry-free space for both kids and their guardians.*/}
{/*We believe that earning should go hand in hand with learning. As kids complete projects and earn, they also acquire essential life skills such as financial literacy, time management, and effective communication. WrenchBoard isn't just about making money; it's about fostering holistic growth.*/}
</p>
<p>Learn more at <a href={process.env.REACT_APP_DASH_URL}>www.WrenchBoard.com</a></p>
</div>
</div>
</div>
</div>
</section>
</div>
</div>
</div>
</>
);
}
export default HeroAbout;
+23
View File
@@ -0,0 +1,23 @@
import React from 'react';
import AboutTextComponent from './AboutText';
function ServicesAbout() {
return (
<>
<section className="appie-services-2-area pt-20" id="service">
<div className="container">
<div className="row align-items-end">
<div className="col-12 col-lg-8">
<div className="appie-section-title pb-0">
<h3 className="appie-title">Were driven by your values</h3>
{/* <p>{servicesContent.subTitle}</p> */}
</div>
</div>
</div>
</div>
</section>
</>
);
}
export default ServicesAbout;
+164
View File
@@ -0,0 +1,164 @@
import React from 'react';
import team1 from '../../assets/images/team-1.jpg';
import team2 from '../../assets/images/team-2.jpg';
import team3 from '../../assets/images/team-3.jpg';
import team4 from '../../assets/images/team-4.jpg';
import Image from 'next/image';
function TeamAbout() {
return (
<>
<section className="appie-team-area appie-team-about-area pb-90">
<div className="container">
<div className="row">
<div className="col-lg-12">
<div className="appie-section-title text-center">
<h3 className="appie-title">Meet our Team Members</h3>
<p>Different layouts and styles for team sections.</p>
</div>
</div>
</div>
<div className="row">
<div className="col-lg-3 col-md-6">
<div
className="appie-team-item appie-team-item-about mt-30 wow animated fadeInUp"
data-wow-duration="2000ms"
data-wow-delay="200ms"
>
<div className="thumb">
<Image width='100' height='100' src={team1} alt="" />
<ul>
<li>
<a href="#">
<i className="fab fa-facebook-f"></i>
</a>
</li>
<li>
<a href="#">
<i className="fab fa-twitter"></i>
</a>
</li>
<li>
<a href="#">
<i className="fab fa-pinterest-p"></i>
</a>
</li>
</ul>
</div>
<div className="content text-left">
<h5 className="title">Benjamin Evalent</h5>
<span>CEO-Founder</span>
</div>
</div>
</div>
<div className="col-lg-3 col-md-6">
<div
className="appie-team-item appie-team-item-about mt-30 wow animated fadeInUp"
data-wow-duration="2000ms"
data-wow-delay="400ms"
>
<div className="thumb">
<Image width='100' height='100' src={team2} alt="" />
<ul>
<li>
<a href="#">
<i className="fab fa-facebook-f"></i>
</a>
</li>
<li>
<a href="#">
<i className="fab fa-twitter"></i>
</a>
</li>
<li>
<a href="#">
<i className="fab fa-pinterest-p"></i>
</a>
</li>
</ul>
</div>
<div className="content text-left">
<h5 className="title">Benjamin Evalent</h5>
<span>CEO-Founder</span>
</div>
</div>
</div>
<div className="col-lg-3 col-md-6">
<div
className="appie-team-item appie-team-item-about mt-30 wow animated fadeInUp"
data-wow-duration="2000ms"
data-wow-delay="600ms"
>
<div className="thumb">
<Image width='100' height='100' src={team3} alt="" />
<ul>
<li>
<a href="#">
<i className="fab fa-facebook-f"></i>
</a>
</li>
<li>
<a href="#">
<i className="fab fa-twitter"></i>
</a>
</li>
<li>
<a href="#">
<i className="fab fa-pinterest-p"></i>
</a>
</li>
</ul>
</div>
<div className="content text-left">
<h5 className="title">Benjamin Evalent</h5>
<span>CEO-Founder</span>
</div>
</div>
</div>
<div className="col-lg-3 col-md-6">
<div
className="appie-team-item appie-team-item-about mt-30 wow animated fadeInUp"
data-wow-duration="2000ms"
data-wow-delay="800ms"
>
<div className="thumb">
<Image width='100' height='100' src={team4} alt="" />
<ul>
<li>
<a href="#">
<i className="fab fa-facebook-f"></i>
</a>
</li>
<li>
<a href="#">
<i className="fab fa-twitter"></i>
</a>
</li>
<li>
<a href="#">
<i className="fab fa-pinterest-p"></i>
</a>
</li>
</ul>
</div>
<div className="content text-left">
<h5 className="title">Benjamin Evalent</h5>
<span>CEO-Founder</span>
</div>
</div>
</div>
<div className="col-lg-12">
<div className="team-btn text-center mt-50">
<a className="main-btn" href="https://www.wrenchboard.com/signup">
Get Started <i className="fal fa-arrow-right"></i>
</a>
</div>
</div>
</div>
</div>
</section>
</>
);
}
export default TeamAbout;
+34
View File
@@ -0,0 +1,34 @@
import React from 'react';
import useToggle from '../../Hooks/useToggle';
import BackToTop from '../BackToTop';
import SignupHomeEight from '../HomeEight/SignupHomeEight';
import FooterHomeOne from '../HomeOne/FooterHomeOne';
import SponserHomeTwo from '../HomeTwo/SponserHomeTwo';
import Drawer from '../Mobile/Drawer';
import HeaderAbout from './HeaderAbout';
import HeroAbout from './HeroAbout';
import ServicesAbout from './ServicesAbout';
import TeamAbout from './TeamAbout';
import StickyHeaderNav from '../StickyHeader/StickyHeaderNav';
import AboutTextComponent from '../AboutText/AboutText';
function AboutUs() {
const [drawer, drawerAction] = useToggle(false);
return (
<>
<Drawer drawer={drawer} action={drawerAction.toggle} />
{/* <StickyHeaderNav action={drawerAction.toggle} /> */}
<HeaderAbout drawer={drawer} action={drawerAction.toggle} />
<HeroAbout />
<ServicesAbout />
{/* <TeamAbout />*/}
{/* <SponserHomeTwo />
<SignupHomeEight />*/}
<AboutTextComponent/>
<FooterHomeOne className="appie-footer-about-area" />
<BackToTop />
</>
);
}
export default AboutUs;
+34
View File
@@ -0,0 +1,34 @@
import React from 'react'
import HomeNav from '../components/navigation/HomeNav';
import FooterHomeOne from '../components/FooterHomeOne';
import HeroAbout from './HeroAbout';
import ServicesAbout from './ServicesAbout';
import AboutTextComponent from './AboutText';
import BackToTop from '../components/BackToTop'
// must be a better way to centralize the style = TEMPORARY USE
import '../assets/css/bootstrap.min.css';
import '../assets/css/custom-animated.css';
import '../assets/css/default.css';
import '../assets/css/font-awesome.min.css';
import '../assets/css/magnific-popup.css';
import '../assets/css/main.css';
import '../assets/css/style.css';
function page() {
return (
<>
<HomeNav />
<HeroAbout />
<ServicesAbout />
<AboutTextComponent/>
<FooterHomeOne className="appie-footer-about-area" />
<BackToTop className='' />
</>
)
}
export default page
+1 -1
View File
@@ -5633,7 +5633,7 @@ readers do not read off random characters that represent icons */
content: "\f099"; }
.fa-x-twitter:before {
content: "\e61b"; }
content: "𝕏"; }
.fa-twitter-square:before {
content: "\f081"; }
+27 -14
View File
@@ -49,6 +49,10 @@ span,
a {
display: inline-block;
transition: all linear 0.3s;
text-decoration: none;
}
a:hover {
text-decoration: none !important;
}
h1,
@@ -185,7 +189,7 @@ p {
}
.appie-section-title {
padding-bottom: 25px;
padding-bottom: 15px;
}
.appie-section-title .appie-title {
font-size: 44px;
@@ -2269,7 +2273,7 @@ p {
.appie-page-title-area {
height: 250px;
background-image: url(../images/service-back.jpg);
background-image: url(/assets/images/service-back.jpg);
background-size: cover;
background-position: center;
background-repeat: no-repeat;
@@ -2278,7 +2282,7 @@ p {
}
.appie-page-title-area.appie-page-service-title-area {
height: 400px;
background-image: url(../images/service-back.jpg);
background-image: url(/assets/images/service-back.jpg);
}
@media only screen and (min-width: 768px) and (max-width: 991px) {
.appie-page-title-area.appie-page-service-title-area {
@@ -4420,7 +4424,7 @@ p {
right: 0;
height: 100%;
width: 50%;
background-image: url(../images/faq-play-bg.png);
background-image: url(/assets/images/faq-play-bg.png);
background-position: center;
background-repeat: no-repeat;
background-size: cover;
@@ -4432,7 +4436,7 @@ p {
right: 0;
height: 750px;
width: 50%;
background-image: url(../images/mission-bg.png);
background-image: url(/assets/images/mission-bg.png);
background-position: center;
background-repeat: no-repeat;
background-size: cover;
@@ -6113,7 +6117,7 @@ blockquote cite {
padding-top: 250px;
width: 100%;
min-height: 100vh;
background: url("../images//wrench-page-notfound.jpg") center/cover;
background: url(/assets//images/wrench-page-notfound.jpg) center/cover;
position: relative;
/* z-index: 1; */
}
@@ -6642,7 +6646,7 @@ blockquote cite {
opacity: 2.9;
}
.appie-about-page-content a {
color: red;
color: red !important;
border: 2px solid #fff;
border-radius: 10px;
padding: 0px 10px;
@@ -6654,7 +6658,7 @@ blockquote cite {
}
.appie-about-page-content a:hover {
background: #fff;
color: #2b70fa;
color: #2b70fa !important;
}
.appie-about-page-content::before {
position: absolute;
@@ -6663,7 +6667,7 @@ blockquote cite {
top: -710px;
height: 645px;
width: 80vw;
background-image: url(../images/about-us-main.jpg);
background-image: url(/assets/images/about-us-main.jpg);
background-size: cover;
background-position: center;
background-repeat: no-repeat;
@@ -6729,7 +6733,7 @@ blockquote cite {
}
.appie-about-8-area {
/* background-image: url(../images/background-bg.jpg); */
background-image: url(/assets/images/background-bg.jpg);
background-size: cover;
background-position: center;
background-repeat: no-repeat;
@@ -6748,12 +6752,12 @@ blockquote cite {
}
.appie-about-8-box {
padding: 50px 50px 0px 50px;
padding: 50px;
z-index: 10;
}
@media only screen and (min-width: 992px) and (max-width: 1200px) {
.appie-about-8-box {
padding: 50px 25px 0px 25px;
padding: 25px;
}
}
@media only screen and (min-width: 768px) and (max-width: 991px) {
@@ -8635,8 +8639,7 @@ LND PAGE STYLE STARTS HERE
}
/* -----------Interface_Section-Css-Start----------------- */
/* -----------Interface_Section-Css-Start FOR HOME IMAGE SLIDERS ----------------- */
/* interface wraper */
.interface_section .screen_slider {
margin-top: 35px;
@@ -8660,4 +8663,14 @@ LND PAGE STYLE STARTS HERE
transform: scale(1);
/* border: 3px solid #000; */
/* padding: 5px; */
}
.carousel .slider {
height: auto !important;
width: 300px !important;
transform: scale(.9);
}
.carousel div {
gap: 5px !important;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

+64
View File
@@ -0,0 +1,64 @@
import singlePost from "../../assets/images/single-post/1.jpg";
import { BlogLoader, ImageLoader } from "../../lib/SkeletonLoaders";
import Image from "next/image";
// import LazyImage from "../../lib/LazyImage";
/**
* Renders a blog post component.
* @returns {JSX.Element} The rendered blog post component.
*/
function Blog({ blogItem, imgUrl, loader }) {
// Generate a unique ID
const uniqueId = `element_${Math.random().toString(36).substr(2, 9)}`;
const blogImg = `${imgUrl}/${blogItem?.meta_value || singlePost}`;
const imgLoaderStyles = {
"--loader-width": "750px",
"--loader-height": "550px",
};
const headerLoaderStyles = {
"--text-container-width": "300px",
"--text-container-height": "18px",
};
const bodyTextLoaderStyles = {
"--text-container-width": "770px",
"--text-container-height": "15px",
};
return (
<>
<div className="single-post-area">
<div className="post-thumb" style={{ marginTop: "0" }}>
{loader ? (
<div style={imgLoaderStyles}>
<ImageLoader />
</div>
) : (
<img src={blogImg} alt={blogItem?.meta_value || "single-post.jpg"} key={uniqueId} />
)}
</div>
{loader ? (
<div style={headerLoaderStyles}>
<BlogLoader />
</div>
) : (
<h4 className="article-title">{blogItem?.post_title}</h4>
)}
{loader ? (
<div style={bodyTextLoaderStyles}>
<BlogLoader />
</div>
) : (
<div
dangerouslySetInnerHTML={{ __html: blogItem?.post_content }}
></div>
)}
</div>
</>
);
}
export default Blog;
+69
View File
@@ -0,0 +1,69 @@
import React from "react";
import Link from "next/link";
import BlogImg1 from "../../assets/images/blog/p1.jpg";
/**
* Renders a sidebar for a blog.
* @param {Object} blogs - An object containing the data for the blog posts.
* @returns {JSX.Element} - JSX code that renders the blog sidebar.
*/
function BlogSideBar({ blogs }) {
/**
* Renders other blog posts.
* This is an Array of JSX elements representing the other blog posts.
*/
const renderOtherBlogPosts = () => {
return blogs?.blogdata?.slice(0, 4).map((post) => {
const blogDate = new Date(post.post_date).toLocaleDateString("en-US", {
year: "numeric",
month: "short",
day: "numeric",
});
const blogImg =
post.meta_value != null
? `${blogs?.image_url}/${post.meta_value}`
: BlogImg1;
return (
<div className="popular-post" key={post.id}>
<Link href={`/blog/blogdetail/${post?.id}`}>
<img width='auto' height='auto' src={blogImg} alt="blog-img" style={{top: "20px"}} loading="lazy" />
</Link>
<h5>
<Link href={`/blog/blogdetail/${post?.id}`}>{post?.post_title}</Link>
</h5>
<span>{blogDate}</span>
</div>
);
});
};
return (
<div className="blog-sidebar">
<aside className="widget widget-categories">
{/*<h3 className="widget-title">Categories</h3>*/}
<ul>
<li>
<Link href="/about-us">About</Link>
</li>
<li>
<a href={process.env.NEXT_PUBLIC_DASH_URL_SIGNUP}>Sign up</a>
</li>
<li>
<a href={process.env.NEXT_PUBLIC_DASH_URL_LOGIN}>Login</a>
</li>
<li>
<a href="https://blog.wrenchboard.com/">More Articles</a>
</li>
</ul>
</aside>
<aside className="widget widget-trend-post">
<h3 className="widget-title">Other Posts</h3>
{renderOtherBlogPosts()}
</aside>
</div>
);
}
export default BlogSideBar;
+84
View File
@@ -0,0 +1,84 @@
"use client"
import React, { useEffect, useMemo, useState } from 'react'
import { useParams } from 'next/navigation';
import ServiceNav from '@/app/components/navigation/ServiceNav';
import HeroNews from '@/app/components/News/HeroNews';
import FooterHomeOne from '../../../components/FooterHomeOne';
import BackToTop from '@/app/components/BackToTop';
import BlogData from '@/app/Services/BlogData';
import Blog from '../Blog'
import BlogSideBar from '../BlogSideBar'
// must be a better way to centralize the style = TEMPORARY USE
import '../../../assets/css/bootstrap.min.css';
import '../../../assets/css/custom-animated.css';
import '../../../assets/css/default.css';
import '../../../assets/css/font-awesome.min.css';
import '../../../assets/css/magnific-popup.css';
import '../../../assets/css/main.css';
import '../../../assets/css/style.css';
function Page() {
const [isLoading, setIsLoading] = useState(false);
const [blogs, setBlogs] = useState([]);
const { id } = useParams();
useEffect(() => {
const fetchBlogs = async () => {
setIsLoading(true);
try {
const res = await BlogData();
setBlogs(res.data);
setIsLoading(false)
} catch (err) {
console.log("Error loading blogdata", err);
setIsLoading(false)
}
};
fetchBlogs();
}, []);
const blogItem = useMemo(() => {
return blogs?.blogdata?.find((item) => item.id == id);
}, [blogs, id]);
return (
<>
<ServiceNav />
{/* Renders the hero section */}
<HeroNews
title="Blog"
breadcrumb={[
{ link: "/", title: "Home" },
{ link: "/blog", title: "Blogs" },
{
link: `/blog/blogdetail/${id}`,
title: isLoading ? "please wait..." : blogItem ? blogItem.post_title : "Post not found",
},
]}
/>
{/* Renders the blog content and sidebar */}
<section className="blogpage-section">
<div className="container">
<div className="row">
<div className="col-lg-8 col-md-7">
<Blog blogItem={blogItem} imgUrl={blogs?.image_url} loader={isLoading} />
</div>
<div className="col-lg-4 col-md-5">
<BlogSideBar blogs={blogs} />
</div>
</div>
</div>
</section>
<FooterHomeOne className='' />
<BackToTop className='' />
</>
)
}
export default Page
+45
View File
@@ -0,0 +1,45 @@
import React from 'react'
import FooterHomeOne from '../components/FooterHomeOne';
import HeroNews from '../components/News/HeroNews';
import BackToTop from '../components/BackToTop';
import ServiceNav from '../components/navigation/ServiceNav';
import Blogs from '../components/News/Blogs';
// must be a better way to centralize the style = TEMPORARY USE
import '../assets/css/bootstrap.min.css';
import '../assets/css/custom-animated.css';
import '../assets/css/default.css';
import '../assets/css/font-awesome.min.css';
import '../assets/css/magnific-popup.css';
import '../assets/css/main.css';
import '../assets/css/style.css';
function page() {
return (
<>
<ServiceNav />
<HeroNews
title="Blogs"
breadcrumb={[
{ link: "/", title: "Home" },
{ link: "/blog", title: "Blogs" },
]}
/>
<section className="blogpage-section">
<div className="container">
<div className="row">
<div className="col-12">
<Blogs pathname='/blog' />
</div>
</div>
</div>
</section>
<FooterHomeOne className='' />
<BackToTop className='' />
</>
)
}
export default page
+55
View File
@@ -0,0 +1,55 @@
import React from 'react'
import frame from '../assets/images/use-case-side-main.png'; //about-frame.png'
import screen from '../assets/images/use-case-side-extra.png'; //about-screen.png'
import Image from 'next/image';
const AboutApp = ({ video, dark }) => {
return (
<>
<section className="row_am about_app_section _">
<div className="container">
<div className="row modern_ui_section">
<div className="col-lg-6">
<div className="about_img" data-aos="fade-in" data-aos-duration="1500">
<div className="frame_img">
<Image width='100%' height='auto' className="w-100 moving_position_animatin" src={frame} alt="image" />
</div>
<div className="screen_img">
<Image width='100%' height='auto' className="w-100 moving_animation" src={screen} alt="image" />
</div>
</div>
</div>
<div className="col-lg-6">
<div className="about_text">
<div className="section_title" data-aos="fade-up" data-aos-duration="1500" data-aos-delay="100">
<h2>Motivate & Organize <br /> <span>Rewards</span></h2>
<p>
With a planned reward, the parent can introduce the family to earning and start financial education early.
</p>
</div>
<ul className="design_block">
<li data-aos="fade-up" data-aos-duration="1500">
<h4>Goals Completed</h4>
<p>Motivate with rewards for goals completed, passing the exam, finishing chores, and learning new skills. </p>
</li>
<li data-aos="fade-up" data-aos-duration="1500">
<h4>Connect Family</h4>
<p>It takes a village to raise a kid and share good news and encouragement from the more prominent family. Connect family to the achievements to boost encouragement. </p>
</li>
<li data-aos="fade-up" data-aos-duration="1500">
<h4>Find any Task </h4>
<p>Make more, connect to the marketplace, and earn from appropriate tasks.</p>
</li>
</ul>
</div>
</div>
</div>
</div>
</section>
</>
)
}
export default AboutApp
+35 -33
View File
@@ -1,17 +1,17 @@
import React from 'react';
import thumb5 from '../assets/images/about-thumb-5.png';
import cardImg from '../assets/images/home/card-home-01.png'
import bg from '../assets/images/background-bg.jpg'
import cardImg from '../assets/images/home/wrench-card-only.png'
// import bg from '../assets/images/background-bg.jpg'
import Image from 'next/image';
function AfterHero() {
return (
<>
<section className="appie-about-8-area pt-50 pb-70" style={{ backgroundImage: `url(${bg.src})`, backgroundSize: 'cover' }}>
<section className="appie-about-8-area pt-50 pb-70">
<div className="container">
<div className="row">
<div className="col-lg-12">
<div className="appie-section-title mb-30">
<div className="appie-section-title">
<h3 className="appie-title">
{/* We bring everything <br />
that's required to build apps */}
@@ -23,23 +23,24 @@ function AfterHero() {
<div className="row">
<div className="col-lg-7 mb-3 mb-lg-0">
<div className='appie-about-container'>
<div className="appie-about-8-box">
<h3 className="title">
Reward Accomplishments
</h3>
<p>
Set goals, tasks, or anything that motivates or needs to be done and reward completion. WrenchBoard is the platform to plan rewards off pick your nose and blow
</p>
</div>
<div className='row'>
<div className='col-12 col-sm-4 order-2 order-sm-1 align-self-end'>
<a className="m-1 main-btn" href={process.env.REACT_APP_DASH_URL_LOGIN}>
Learn More <i className="fal fa-arrow-right" />
</a>
<div className='row appie-about-8-box'>
<div className="col-12 col-md-6">
<h3 className="title">
Reward Accomplishments
</h3>
<p>
Set goals, tasks, or anything that motivates or needs to be done and reward completion. WrenchBoard is the platform to plan rewards off pick your nose and blow
</p>
<div className=''>
<a className="mb-5 mb-md-0 main-btn" href={process.env.NEXT_PUBLIC_DASH_URL_LOGIN}>
Learn More <i className="fal fa-arrow-right" />
</a>
</div>
</div>
<div className="col-12 col-sm-8 order-1 order-sm-2">
<div className="col-12 col-md-6">
<Image
src={cardImg}
className='w-100 h-100'
width={'100%'}
height={'100%'}
alt=""
@@ -50,24 +51,25 @@ function AfterHero() {
</div>
<div className="col-lg-5">
<div className='appie-about-container'>
<div className="appie-about-8-box">
<h3 className="title">
Assign Faster with <br />
wrenchAgent
</h3>
<p>
Ask our &#x275B;&#x275B;<span className=''>wrench</span><span className=''>Agent</span>&#x275C;&#x275C; Generative AI to assist
</p>
</div>
<div className='row'>
<div className='col-12 col-sm-4 order-2 order-sm-1 align-self-end'>
<a className="m-1 main-btn" href={process.env.REACT_APP_DASH_URL_LOGIN}>
Learn More <i className="fal fa-arrow-right" />
</a>
<div className='row appie-about-8-box'>
<div className="col-12 col-md-6">
<h3 className="title">
Assign Faster with <br />
wrenchAgent
</h3>
<p>
Ask our &#x275B;&#x275B;<span className=''>wrench</span><span className=''>Agent</span>&#x275C;&#x275C; Generative AI to assist
</p>
<div className=''>
<a className="mb-5 mb-md-0 main-btn" href={process.env.NEXT_PUBLIC_DASH_URL_LOGIN}>
Learn More <i className="fal fa-arrow-right" />
</a>
</div>
</div>
<div className="col-12 col-sm-8 order-1 order-sm-2">
<div className="col-12 col-md-6">
<Image
src={thumb5}
className='w-100 h-100'
width={'100%'}
height={'100%'}
alt=""
+20
View File
@@ -0,0 +1,20 @@
"use client"
import React, { useEffect } from 'react';
import TopToBottom from '../lib/TopToBottom';
function BackToTop({ className }) {
useEffect(() => {
TopToBottom('.back-to-top');
});
return (
<>
<div className={`back-to-top ${className}`}>
<a href="#">
<i className="fal fa-arrow-up" />
</a>
</div>
</>
);
}
export default BackToTop;
+2 -2
View File
@@ -1,5 +1,5 @@
import React, { useState } from 'react';
import Blogs from '../News/Blogs';
import React from 'react';
import Blogs from './News/Blogs';
function BlogHomeOne() {
return (
File diff suppressed because one or more lines are too long
+42
View File
@@ -0,0 +1,42 @@
"use client"
import React from 'react';
import Link from 'next/link';
// import { useHistory } from 'react-router-dom';
import Svg from './Svg';
function Error() {
// const history = useHistory();
const goBack = (e) => {
e.preventDefault();
// history.goBack();
};
return (
<>
<div className="appie-error-area">
<div className="container">
<div className="row justify-content-center">
<div className="col-lg-6">
<div className="appie-error-content text-center">
<Svg />
<span>Sorry!</span>
<h3 className="title">The page can&#39;t be found.</h3>
<p>
The page you&#39;re looking for isn&#39;t available. Use the go back
button below
</p>
{/* <a onClick={(e) => goBack(e)} href="#">
Go Back <i className="fal fa-arrow-right"></i>
</a> */}
<Link href="/">
Go Back <i className="fal fa-arrow-right"></i>
</Link>
</div>
</div>
</div>
</div>
</div>
</>
);
}
export default Error;
+8 -7
View File
@@ -5,6 +5,7 @@ import localImgLoad from '../../lib/localImgLoad'
import 'owl.carousel/dist/assets/owl.carousel.css'
import 'owl.carousel/dist/assets/owl.theme.default.css'
import LazyImage from '../../lib/LazyImage'
import Image from 'next/image'
export default function FeaturedScreen() {
@@ -47,43 +48,43 @@ export default function FeaturedScreen() {
<div className="item">
<div className="screen_frame_img">
{/* <img src={localImgLoad('images/slider/slider_1.png')} alt="image" /> */}
<img src={localImgLoad('images/slider/app_sliders/screen_1.png')} alt="image" />
<Image width='auto' height='auto' src={localImgLoad('images/slider/app_sliders/screen_1.png')} alt="image" />
</div>
</div>
<div className="item">
<div className="screen_frame_img">
{/* <img src={localImgLoad('images/slider/slider_2.png')} alt="image" /> */}
<img src={localImgLoad('images/slider/app_sliders/screen_2.png')} alt="image" />
<Image width='auto' height='auto' src={localImgLoad('images/slider/app_sliders/screen_2.png')} alt="image" />
</div>
</div>
<div className="item">
<div className="screen_frame_img">
{/* <img src={localImgLoad('images/slider/slider_3.png')} alt="image" /> */}
<img src={localImgLoad('images/slider/app_sliders/screen_3.png')} alt="image" />
<Image width='auto' height='auto' src={localImgLoad('images/slider/app_sliders/screen_3.png')} alt="image" />
</div>
</div>
<div className="item">
<div className="screen_frame_img">
{/* <img src={localImgLoad('images/slider/slider_4.png')} alt="image" /> */}
<img src={localImgLoad('images/slider/app_sliders/screen_6.png')} alt="image" />
<Image width='auto' height='auto' src={localImgLoad('images/slider/app_sliders/screen_6.png')} alt="image" />
</div>
</div>
<div className="item">
<div className="screen_frame_img">
{/* <img src={localImgLoad('images/slider/slider_5.png')} alt="image" /> */}
<img src={localImgLoad('images/slider/app_sliders/screen_4.png')} alt="image" />
<Image width='auto' height='auto' src={localImgLoad('images/slider/app_sliders/screen_4.png')} alt="image" />
</div>
</div>
<div className="item">
<div className="screen_frame_img">
{/* <img src={localImgLoad('images/slider/slider_7.png')} alt="image" /> */}
<img src={localImgLoad('images/slider/app_sliders/screen_7.png')} alt="image" />
<Image width='auto' height='auto' src={localImgLoad('images/slider/app_sliders/screen_7.png')} alt="image" />
</div>
</div>
<div className="item">
<div className="screen_frame_img">
{/* <img src={localImgLoad('images/slider/slider_7.png')} alt="image" /> */}
<img src={localImgLoad('images/slider/app_sliders/screen_5.png')} alt="image" />
<Image width='auto' height='auto' src={localImgLoad('images/slider/app_sliders/screen_5.png')} alt="image" />
</div>
</div>
</OwlCarousel>
+145
View File
@@ -0,0 +1,145 @@
"use client"
import React, {useState} from 'react'
import Carousel from 'react-simply-carousel';
import Image from 'next/image'
export default function FeaturedScreenTwo() {
const [activeSlide, setActiveSlide] = useState(0);
const handleSlideIndexChange = () => {
setActiveSlideIndex(2)
}
return (
<div className='carousel pt-5'>
<Carousel
activeSlideIndex={activeSlide}
onRequestChange={setActiveSlide}
itemsToShow={1}
itemsToScroll={1}
infinite={true}
autoplay={true}
// delay={3000}
autoplayDelay={5000}
speed={3000}
easing="linear"
centerMode
preventScrollOnSwipe
swipeTreshold={60}
updateOnItemClick={true}
activeSlideProps={{
style: {
transform: 'scale(1)'
}
}}
containerProps={{
style: {
width: "100%",
justifyContent: "space-between",
userSelect: "none"
}
}}
forwardBtnProps={{
//here you can also pass className, or any other button element attributes
style: {
alignSelf: 'center',
background: 'black',
border: 'none',
borderRadius: '50%',
color: 'white',
cursor: 'pointer',
fontSize: '20px',
height: 30,
lineHeight: 1,
textAlign: 'center',
width: 30,
display: 'none'
},
children: <span>{`>`}</span>,
}}
backwardBtnProps={{
//here you can also pass className, or any other button element attributes
style: {
alignSelf: 'center',
background: 'black',
border: 'none',
borderRadius: '50%',
color: 'white',
cursor: 'pointer',
fontSize: '20px',
height: 30,
lineHeight: 1,
textAlign: 'center',
width: 30,
display: 'none'
},
children: <span>{`<`}</span>,
}}
dotsNav={{
show: true,
itemBtnProps: {
style: {
height: 16,
width: 16,
borderRadius: "50%",
border: 0
}
},
activeItemBtnProps: {
style: {
height: 16,
width: 16,
borderRadius: "50%",
border: 0,
background: "black"
}
}
}}
responsiveProps={[
{
itemsToShow: 1,
itemsToScroll: 1,
minWidth: 0,
},
{
itemsToShow: 3,
itemsToScroll: 1,
minWidth: 568,
},
{
itemsToShow: 5,
itemsToScroll: 1,
minWidth: 992,
},
{
itemsToShow: 7,
itemsToScroll: 1,
minWidth: 1440,
},
]}
>
{/* here you can also pass any other element attributes. Also, you can use your custom components as slides */}
<div className='slider' style={{ background: 'transparent' }}>
<img src={'/assets/images/slider/app_sliders/screen_1.png'} alt="image" />
</div>
<div className='slider' style={{ background: 'transparent' }}>
<img src={'/assets/images/slider/app_sliders/screen_2.png'} alt="image" />
</div>
<div className='slider' style={{ background: 'transparent' }}>
<img src={'/assets/images/slider/app_sliders/screen_3.png'} alt="image" />
</div>
<div className='slider' style={{ background: 'transparent' }}>
<img src={'/assets/images/slider/app_sliders/screen_6.png'} alt="image" />
</div>
<div className='slider' style={{ background: 'transparent' }}>
<img src={'/assets/images/slider/app_sliders/screen_4.png'} alt="image" />
</div>
<div className='slider' style={{ background: 'transparent' }}>
<img src={'/assets/images/slider/app_sliders/screen_7.png'} alt="image" />
</div>
<div className='slider' style={{ background: 'transparent' }}>
<img src={'/assets/images/slider/app_sliders/screen_5.png'} alt="image" />
</div>
</Carousel>
</div>
);
}
+19 -18
View File
@@ -2,6 +2,7 @@ import React, { useMemo } from 'react';
import Image from 'next/image';
import logo from '../assets/images/wrenchboard-logo-text.png';
import getConfig from '../../Config/config'; // './../../Config/config'
import Link from 'next/link';
function FooterHomeOne({ className }) {
var site = useMemo(() => getConfig()[0], []);;
@@ -15,21 +16,21 @@ function FooterHomeOne({ className }) {
<div className="col-lg-4 col-md-6">
<div className="footer-about-widget">
<div className="logo">
<a href="#">
<Link href="#">
<Image
src={logo}
width={'175'}
height={'38'}
alt=""
/>
</a>
</Link>
</div>
<p>
{`It is simple. You can set goals, task, or anything that needs to be done and reward accomplishment. WrenchBoard is the platform to connect opportunities. `}
</p>
<a href="/service">
<Link href="/service">
Read More <i className="fal fa-arrow-right" />
</a>
</Link>
<div className="social mt-30">
<ul>
<li>
@@ -38,9 +39,9 @@ function FooterHomeOne({ className }) {
</a>
</li>
<li>
<a href={process.env.REACT_APP_TWITTER_LINK}>
<a href={process.env.NEXT_PUBLIC_TWITTER_LINK}>
{/* <i className="fab fa-twitter" /> */}
<i className="fab fa-x-twitter" />
<i className="fab fa-x-twitter"></i>
</a>
</li>
</ul>
@@ -52,19 +53,19 @@ function FooterHomeOne({ className }) {
<h4 className="title">Company</h4>
<ul>
<li>
<a href="/about-us">About Us</a>
<Link href="/about-us">About Us</Link>
</li>
<li>
<a href="/service">Our Services</a>
<Link href="/service">Our Services</Link>
</li>
<li>
<a href="/use-cases">Use Cases</a>
<Link href="/use-cases">Use Cases</Link>
</li>
<li className='d-none'>
<a target='_blank' href={process.env.REACT_APP_AGENT_LINK}>Agent</a>
<a target='_blank' href={process.env.NEXT_PUBLIC_AGENT_LINK}>Agent</a>
</li>
<li>
<a href="/blog">Blog</a>
<Link href="/blog">Blog</Link>
</li>
</ul>
@@ -75,19 +76,19 @@ function FooterHomeOne({ className }) {
<h4 className="title">Support</h4>
<ul>
<li>
<a href="/contact">Contact</a>
<Link href="/contact">Contact</Link>
</li>
<li>
<a href="/faq">Faqs</a>
<Link href="/faq">Faqs</Link>
</li>
<li>
<a href="https://blog.wrenchboard.com/resources/">Resources</a>
</li>
<li>
<a href="/privacy">Privacy Policy</a>
<Link href="/privacy">Privacy Policy</Link>
</li>
<li>
<a href="/terms">Terms of use</a>
<Link href="/terms">Terms of use</Link>
</li>
</ul>
</div>
@@ -117,16 +118,16 @@ function FooterHomeOne({ className }) {
</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="footer-copyright d-lg-flex align-items-center justify-content-between pt-2">
<div className="apps-download-btn">
<ul>
<li>
<a href={process.env.REACT_APP_APPLE_APP} target="_blank">
<a href={process.env.NEXT_PUBLIC_APPLE_APP} target="_blank">
<i className="fab fa-apple" /> Download for iOS
</a>
</li>
<li>
<a className="item-2" href={process.env.REACT_APP_ANDROID_APP} target="_blank">
<a className="item-2" href={process.env.NEXT_PUBLIC_ANDROID_APP} target="_blank">
<i className="fab fa-google-play" /> Download for
Android
</a>
+2 -2
View File
@@ -34,7 +34,7 @@ function HeroHomeOne() {
<p>Your place to set family goals and reward achievements. Find tasks to earn from, or build a task portfolio and find others to perform tasks for you.</p>
<ul className='d-flex justify-content-center justify-content-lg-start'>
<li className=''>
<a className="item-2" target='_blank' href={process.env.REACT_APP_APPLE_APP}>
<a className="item-2" target='_blank' href={process.env.NEXT_PUBLIC_APPLE_APP}>
<i className="fab fa-apple"></i>
<span>
Available on the <span>App Store</span>
@@ -42,7 +42,7 @@ function HeroHomeOne() {
</a>
</li>
<li className=''>
<a className="item-2" target='_blank' href={process.env.REACT_APP_ANDROID_APP}>
<a className="item-2" target='_blank' href={process.env.NEXT_PUBLIC_ANDROID_APP}>
<i className="fab fa-google-play"></i>
<span>
Available on the <span>Google Play</span>
+17 -17
View File
@@ -1,37 +1,37 @@
import React from 'react';
import useToggle from '../Hooks/useToggle';
// import BackToTop from '../BackToTop';
import Drawer from '../Mobile/Drawer';
// import BlogHomeOne from './BlogHomeOne';
import HomeNav from './navigation/HomeNav'
import BlogHomeOne from './BlogHomeOne';
// import FeaturesHomeOne from './FeaturesHomeOne';
import FooterHomeOne from './FooterHomeOne';
import HeroHomeOne from './HeroHomeOne';
// import HomeOneHeader from './HomeOneHeader';
import ServicesHomeOne from './ServicesHomeOne';
// import ServicesHomeOne from './ServicesHomeOne';
import TrafficHomeOne from './TrafficHomeOne';
import TrafficHomeTwo from './TrafficHomeTwo';
//import FeaturedScreen from './FeaturedScreen';
// import TrafficHomeTwo from './TrafficHomeTwo';
//import FeaturedScreen from './FeaturedScreen';
import AfterHero from './AfterHero';
import NextAfterHero from './NextAfterHero';
// import NextAfterHero from './NextAfterHero';
import BackToTop from './BackToTop';
import SelectFeatures from "@/app/components/SelectFeatutes";
import FeaturedScreenTwo from './FeaturedScreenTwo'
function HomeOne() {
// needed const [drawer, drawerAction] = useToggle(false);
return (
<>
{/* <Drawer drawer={drawer} action={drawerAction.toggle} /> */}
<div className='text-center'>THIS IS HOME </div>
<HomeNav />
<HeroHomeOne />
<AfterHero />
<NextAfterHero />
<ServicesHomeOne />
<SelectFeatures className='pb-95' />
{/*<NextAfterHero />*/}
{/*<ServicesHomeOne />*/}
<TrafficHomeOne />
<TrafficHomeTwo />
{/*<TrafficHomeTwo />*/}
<FeaturedScreenTwo />
<BlogHomeOne />
<FooterHomeOne />
<BackToTop className='' />
</>
);
}
+10 -10
View File
@@ -1,12 +1,12 @@
"use client"
import React, { useEffect } from 'react';
import logo from '../../assets/images/wrenchboard-logo-text.png';
import StickyMenu from '../../lib/StickyMenu';
import Navigation from '../Navigation';
import getConfig from './../../Config/config'
import { Link } from 'react-router-dom';
import logo from '../assets/images/wrenchboard-logo-text.png';
import StickyMenu from '../lib/StickyMenu';
import Navigation from './navigation/Navigation';
import Image from 'next/image';
import Link from 'next/link';
function HomeOneHeader({ action, showLogoOnly = false }) {
var site = getConfig()[0];
useEffect(() => {
StickyMenu();
}, []);
@@ -17,8 +17,8 @@ function HomeOneHeader({ action, showLogoOnly = false }) {
<div className="row align-items-center">
<div className="col-lg-2 col-md-4 col-sm-5 col-6 order-1 order-sm-1">
<div className="appie-logo-box">
<Link to="/">
<img src={logo} alt="WrenchBoard" loading='eager' width="175px" height="38px" />
<Link href="/">
<Image src={logo} alt="WrenchBoard" loading='eager' width="175" height="38" />
</Link>
</div>
</div>
@@ -31,10 +31,10 @@ function HomeOneHeader({ action, showLogoOnly = false }) {
</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}>
<a className="login-btn" href={process.env.NEXT_PUBLIC_DASH_URL_LOGIN}>
<i className="fal fa-user" /> Login
</a>
<a className="main-btn ml-30" href={process.env.REACT_APP_DASH_URL_SIGNUP}>
<a className="main-btn ml-30" href={process.env.NEXT_PUBLIC_DASH_URL_SIGNUP}>
Get Started
</a>
<div
+216
View File
@@ -0,0 +1,216 @@
import React from 'react';
import singlePost from '../../assets/images/single-post/1.jpg';
import author from '../../assets/images/single-post/author.png';
import cmnt1 from '../../assets/images/single-post/c1.png';
import cmnt2 from '../../assets/images/single-post/c2.png';
import cmnt3 from '../../assets/images/single-post/c3.png';
import Image from 'next/image';
function Blog() {
return (
<>
<div className="single-post-area">
<p>
Tosser posh grub he lost his bottle bamboozled show off show off pick your nose
and blow off cheesed off starkers what a load of rubbish, Jeffrey bubble and
squeak I Charles a load of old tosh some dodgy chav wind up David gormless,
hotpot arse over tit hanky panky bog-standard don&#39;t get shirty with me bloke
Richard. Smashing he legged it in my flat bodge a blinding shot amongst
brilliant blag, I grub A bit of how&#39;s your father bite your arm off the BBC the
full monty chancer, bobby bender he nicked it down the pub Why cheeky bugger.
Starkers pardon you bubble and squeak a blinding shot it&#39;s all gone to pot bits
and bobs car boot lurgy so I said cheesed off boot Harry such a fibber, naff
chinwag bamboozled the bee&#39;s knees bloke fanny around loo are you taking the
piss barney off his nut cack. Arse over tit he nicked it that matie boy lost the
plot pardon me my lady well cheers he legged it, boot bits and bobs brown bread
is cras bamboozled bite your arm off down the pub brolly, cobblers horse play
what a load of rubbish sloshed chancer say you mug cockup. Geeza some dodgy chav
bonnet Oxford so I said pukka pardon you starkers cor blimey guvnor are you
taking the piss, cheesed off in my flat cheeky posh down the pub horse play
nancy boy plastered cobblers cack, morish chinwag the BBC my good sir jolly good
cuppa amongst blatant. Grub owt to do with me cheeky bugger squiffy chinwag
pukka say hunky-dory crikey quaint fanny around jolly good brown bread up the
kyver cack zonked tickety boo mush morish.
</p>
<div className="post-thumb">
<Image width='100' height='100' src={singlePost} alt="" />
</div>
<h4 className="article-title">Logotype Masterclass with Jessica Hische</h4>
<p>
Lost the plot morish bleeder absolutely bladdered my lady chinwag that bleeding
Eaton blag, cheeky bugger burke matie boy brown bread say pukka off his nut
sloshed mufty, squiffy show off show off pick your nose and blow off brolly bite
your arm off bloke bubble and squeak hotpot happy days. Old spiffing cras bugger
blimey chancer me old mucker vagabond you mug, amongst absolutely bladdered
spend a penny ruddy wellies he lost his bottle hanky panky up the kyver bender,
give us a bell my good sir car boot pear shaped young delinquent victoria sponge
tomfoolery. Lavatory knackered pukka chip shop a blinding shot cor blimey guvnor
bodge blower, barmy faff about cheeky nice one at public school. Have it down
the pub posh matie boy wind up hunky-dory, he lost his bottle the full monty
bugger all mate cheeky bugger cras chancer, absolutely bladdered amongst
tomfoolery pukka. Knackered
</p>
<p>
James Bond old happy days the wireless cracking goal bloke me old mucker, arse
over tit blower mush the bee&#39;s knees chip shop the BBC, say lemon squeezy
blatant what a load of rubbish bog-standard nancy boy. Mush spiffing good time
brown bread cheeky bite your arm off chip shop bugger all mate, my lady down the
pub is faff about pukka.
</p>
<blockquote>
<p>
I don&#39;t want no agro brilliant are you taking the piss skive off super boot
chancer don&#39;t get shirty.
</p>
<cite>Indigo Violet</cite>
</blockquote>
<p>
That faff about the full monty blower bubble and squeak cheeky old matie boy
burke, the bee&#39;s knees what a load of rubbish golly gosh mufty is Elizabeth
squiffy, lurgy chimney pot Jeffrey Richard naff Queen&#39;s English cheesed off. Old
bonnet cheesed off lurgy me old mucker a blinding shot bits and bobs lavatory
barney, say no biggie jolly good mush chancer pukka what a load of rubbish,
Harry don&#39;t get shirty with me arse over tit he lost his bottle spiffing good
time bubble and squeak say. I bog Harry a load of old tosh quaint brown bread
get stuffed mate bobby, lemon squeezy boot bum bag chimney pot codswallop
amongst, lavatory twit bits and bobs pardon you daft ummm I&#39;m telling. Blatant
matie boy say bugger all mate butty gormless, you mug pukka happy days bobby.
Down the pub what a load of rubbish geeza faff about chancer bits and bobs daft
lavatory boot victoria sponge spend a penny grub ummm I&#39;m telling, absolutely
bladdered A bit of how&#39;s your father arse over tit do one chimney pot tomfoolery
porkies owt to do with me spiffing good time zonked.
</p>
<div className="post-tags">
<h5>Tags:</h5>
<a href="#">Bisy LMS</a>
<a href="#">Design</a>
<a href="#">General</a>
</div>
<div className="post-share">
<h5>Share:</h5>
<a className="fac" href="#">
<i className="fab fa-facebook-f"></i>
</a>
<a className="twi" href="#">
<i className="fab fa-twitter"></i>
</a>
<a className="goo" href="#">
<i className="fab fa-google"></i>
</a>
</div>
<div className="post-admin">
<Image width='100' height='100' src={author} alt="" />
<a href="#">Justin Case</a>
<span>About Author</span>
<p>
Me old mucker bits and bobs you mug tickety-boo a load of old tosh bender
mufty bloke old daft.
</p>
</div>
</div>
<div className="comment-area">
<h3>Comment (3)</h3>
<ol className="comment-list">
<li>
<div className="single-comment">
<Image width='100' height='100' src={cmnt1} alt="" />
<h5>
<a href="#">Jason Response</a>
</h5>
<span>April 03, 2019</span>
<div className="comment">
<p>
He legged it bevvy mush owt to do with me such fibber fa about
cup of tea sloshed morish butty bubble. Butty gormless lavatory
twit bits and bobs pardon you daft ummm I&#39;m telling.
</p>
</div>
<a className="comment-reply-link" href="#">
<i className="fal fa-reply"></i>Reply
</a>
<div className="c-border"></div>
</div>
<ul className="children">
<li>
<div className="single-comment">
<Image width='100' height='100' src={cmnt2} alt="" />
<h5>
<a href="#">Sue Shei</a>
</h5>
<span>April 14, 2019</span>
<div className="comment">
<p>
Super chancer cheeky bloke haggle give us a bell well
mufty chinwag say bite. lavatory twit bits and bobs
pardon you daft ummm I&#39;m telling. Blatant matie boy say
bugger all mate butty gormless
</p>
</div>
<a className="comment-reply-link" href="#">
<i className="fal fa-reply"></i>Reply
</a>
<div className="c-border"></div>
</div>
</li>
<li>
<div className="single-comment">
<Image width='100' height='100' src={cmnt3} alt="" />
<h5>
<a href="#">Douglas Lyphe</a>
</h5>
<span>July 27, 2020</span>
<div className="comment">
<p>
Oxford baking cakes dropped clanger fanny around
vagabond amongst cor blimey guvnor. Blatant matie boy
say bugger all mate butty gormless lavatory twit bits
and bobs pardon you daft ummm I&#39;m telling.
</p>
</div>
<a className="comment-reply-link" href="#">
<i className="fal fa-reply"></i>Reply
</a>
<div className="c-border"></div>
</div>
</li>
</ul>
</li>
</ol>
</div>
<div className="comment-form-area">
<h3>Post a Comment</h3>
<p>Your email address will not be published. Required fields are marked</p>
<div className="comment-form">
<form className="row" action="#" method="post">
<div className="col-md-6">
<input type="text" name="name" placeholder="Name" />
</div>
<div className="col-md-6">
<input type="email" name="email" placeholder="Email" />
</div>
<div className="col-md-12">
<input type="url" name="url" placeholder="Website" />
</div>
<div className="col-md-12">
<div className="save-comment">
<input id="history-name" type="checkbox" />
<label htmlFor="history-name">
Save my name, email, and website in this browser for the next
time I comment.
</label>
</div>
</div>
<div className="col-md-12">
<textarea placeholder="Coment"></textarea>
</div>
<div className="col-md-12">
<button type="submit">Post Comment</button>
</div>
</form>
</div>
</div>
</>
);
}
export default Blog;
+110
View File
@@ -0,0 +1,110 @@
import React from 'react';
import BlogImg1 from '../../assets/images/blog/p1.jpg';
import BlogImg2 from '../../assets/images/blog/p2.jpg';
import BlogImg3 from '../../assets/images/blog/p3.jpg';
import BlogImg4 from '../../assets/images/blog/p4.jpg';
import Image from 'next/image';
function BlogSideBar() {
return (
<div className="blog-sidebar">
<aside className="widget widget-search">
<form className="search-form" action="#" method="post">
<input type="search" name="s" placeholder="Search..." />
<button type="submit">
<i className="fal fa-search"></i>
</button>
</form>
</aside>
<aside className="widget widget-categories">
<h3 className="widget-title">Categories</h3>
<ul>
<li>
<a href="#">Web Design</a>
<span>(24)</span>
</li>
<li>
<a href="#">Marketing</a>
<span>(15)</span>
</li>
<li>
<a href="#">Frontend</a>
<span>(8)</span>
</li>
<li>
<a href="#">IT & Software</a>
<span>(13)</span>
</li>
<li>
<a href="#">Photography</a>
<span>(4)</span>
</li>
<li>
<a href="#">Technology</a>
<span>(16)</span>
</li>
<li>
<a href="#">General</a>
<span>(12)</span>
</li>
</ul>
</aside>
<aside className="widget widget-trend-post">
<h3 className="widget-title">Popular Posts</h3>
<div className="popular-post">
<a href="single-post.html">
<Image width='100' height='100' src={BlogImg1} alt="" />
</a>
<h5>
<a href="single-post.html">Using creative problem Solving</a>
</h5>
<span>March 10, 2020</span>
</div>
<div className="popular-post">
<a href="single-post.html">
<Image width='100' height='100' src={BlogImg2} alt="" />
</a>
<h5>
<a href="single-post.html">Fundamentals of UI Design</a>
</h5>
<span>Jan 14, 2020</span>
</div>
<div className="popular-post">
<a href="single-post.html">
<Image width='100' height='100' src={BlogImg3} alt="" />
</a>
<h5>
<a href="single-post.html">Making music with Other people</a>
</h5>
<span>April 12, 2020</span>
</div>
<div className="popular-post">
<a href="single-post.html">
<Image width='100' height='100' src={BlogImg4} alt="" />
</a>
<h5>
<a href="single-post.html">Brush strokes energize Trees in paintings</a>
</h5>
<span>July 4, 2020</span>
</div>
</aside>
<aside className="widget">
<h3 className="widget-title">Popular Tags</h3>
<div className="tags">
<a href="#">Bisy LMS</a>
<a href="#">Design</a>
<a href="#">General</a>
<a href="#">Online</a>
<a href="#">Prevention</a>
<a href="#">Artist</a>
<a href="#">Education</a>
<a href="#">Motivation</a>
<a href="#">Politico</a>
<a href="#">Live Cases</a>
</div>
</aside>
</div>
);
}
export default BlogSideBar;
+88
View File
@@ -0,0 +1,88 @@
"use client"
import React, { useEffect, useState } from "react";
import Link from "next/link";
import blogOne from "../../assets/images/blog/1.jpg";
import BlogData from "../../Services/BlogData";
import Image from "next/image";
/**
* Fetches blog data from an API and renders the blogs on the page.
* Displays a maximum of six blogs on the home page and all blogs on other pages.
*/
function Blogs({ pathname }) {
const [blogs, setBlogs] = useState([]);
useEffect(() => {
const fetchBlogs = async () => {
try {
const res = await BlogData();
setBlogs(res.data);
} catch (err) {
console.log("Error loading blogdata", err);
}
};
fetchBlogs();
}, []);
const renderBlogs = () => {
return blogs?.blogdata?.map((blog, index) => {
const options = {
weekday: "short",
year: "numeric",
month: "long",
day: "numeric",
};
const postDt = new Date(blog.post_date).toLocaleDateString(
"en-US",
options
);
const blgImg =
blog.meta_value != null
? `${blogs?.blogconfig?.media_url}/${blog.meta_value}`
: blogOne;
return (
<div key={blog.id} className="col-lg-4 col-md-6">
<div
className="appie-blog-item mt-30 wow animated fadeInUp"
data-wow-duration="3000ms"
data-wow-delay="200ms"
>
<Link href={`/blog/blogdetail/${blog?.id}`} className="thumb">
<img
src={blgImg}
alt={blog.post_title}
width={370} height={'auto'}
// style={{height: 'auto' }}
/>
</Link>
<div className="content">
<div className="blog-meta">
<ul>
<li style={{cursor: "pointer"}}>{postDt}</li>
</ul>
</div>
<h3 className="title">
<Link href={`/blog/blogdetail/${blog?.id}`}>{blog.post_title}</Link>
</h3>
<Link href={`/blog/blogdetail/${blog?.id}`}>
Learn More <i className="fal fa-arrow-right" />
</Link>
</div>
</div>
</div>
);
});
};
return (
<>
<div className="row">
{pathname === "/" ? renderBlogs()?.slice(0, 6) : renderBlogs()}
</div>
</>
);
}
export default Blogs;
+55
View File
@@ -0,0 +1,55 @@
import React, { useEffect } from 'react';
import Image from 'next/image';
import logo from '../../assets/images/wrenchboard-logo-text.png';
import StickyMenu from '../../lib/StickyMenu';
import Navigation from '../Navigation';
import getConfig from './../../Config/config'
function HeaderNews({ action }) {
var site = getConfig()[0];
useEffect(() => {
StickyMenu();
});
return (
<>
<header className="appie-header-area appie-header-page-area appie-sticky">
<div className="container">
<div className="header-nav-box header-nav-box-3 header-nav-box-inner-page">
<div className="row align-items-center">
<div className="col-lg-2 col-md-4 col-sm-5 col-6 order-1 order-sm-1">
<div className="wrench-logo-box">
<a href="/">
<Image width='auto' height='auto' src={logo} alt="" />
</a>
</div>
</div>
<div className="col-lg-6 col-md-1 col-sm-1 order-3 order-sm-2">
<div className="appie-header-main-menu">
<Navigation />
</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"></i> 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"></i>
</div>
</div>
</div>
</div>
</div>
</div>
</header>
</>
);
}
export default HeaderNews;
+31
View File
@@ -0,0 +1,31 @@
import Link from 'next/link';
import React from 'react';
function HeroNews({ title, breadcrumb }) {
return (
<>
<div className="appie-page-title-area">
<div className="container">
<div className="row">
<div className="col-lg-12">
<div className="appie-page-title-item">
<h3 className="title">{title}</h3>
<nav aria-label="breadcrumb">
<ol className="breadcrumb">
{breadcrumb.map((value) => (
<li key={Math.random()} className="breadcrumb-item">
<Link href={value.link}>{value.title}</Link>
</li>
))}
</ol>
</nav>
</div>
</div>
</div>
</div>
</div>
</>
);
}
export default HeroNews;
+45
View File
@@ -0,0 +1,45 @@
import React from 'react';
import useToggle from '../../Hooks/useToggle';
import BackToTop from '../BackToTop';
import FooterHomeOne from '../HomeOne/FooterHomeOne';
import Drawer from '../Mobile/Drawer';
import Blog from './Blog';
import BlogSideBar from './BlogSideBar';
import HeaderNews from './HeaderNews';
import HeroNews from './HeroNews';
import StickyHeaderNav from '../StickyHeader/StickyHeaderNav';
function SingleNews() {
const [drawer, drawerAction] = useToggle(false);
return (
<>
<Drawer drawer={drawer} action={drawerAction.toggle} />
{/* <StickyHeaderNav action={drawerAction.toggle} /> */}
<HeaderNews action={drawerAction.toggle} />
<HeroNews
title="Blog"
breadcrumb={[
{ link: '/', title: 'home' },
{ link: '/news', title: 'Blogs' },
{ link: '/news/single-news', title: 'Blog' },
]}
/>
<section className="blogpage-section">
<div className="container">
<div className="row">
<div className="col-lg-8 col-md-7">
<Blog />
</div>
<div className="col-lg-4 col-md-5">
<BlogSideBar />
</div>
</div>
</div>
</section>
<FooterHomeOne />
<BackToTop />
</>
);
}
export default SingleNews;
+42
View File
@@ -0,0 +1,42 @@
import React from 'react';
import useToggle from '../../Hooks/useToggle';
import BackToTop from '../BackToTop';
import FooterHomeOne from '../HomeOne/FooterHomeOne';
import Drawer from '../Mobile/Drawer';
import Blogs from './Blogs';
import BlogSideBar from './BlogSideBar';
import HeaderNews from './HeaderNews';
import HeroNews from './HeroNews';
import StickyHeaderNav from '../StickyHeader/StickyHeaderNav';
function News() {
const [drawer, drawerAction] = useToggle(false);
return (
<>
<Drawer drawer={drawer} action={drawerAction.toggle} />
{/* <StickyHeaderNav action={drawerAction.toggle} /> */}
<HeaderNews action={drawerAction.toggle} />
<HeroNews
title="Blogs"
breadcrumb={[
{ link: '/', title: 'home' },
{ link: '/news', title: 'Blogs' },
]}
/>
<section className="blogpage-section">
<div className="container">
<div className="row">
<div className="col-lg-12 col-md-7">
<Blogs />
</div>
</div>
</div>
</section>
<FooterHomeOne />
<BackToTop />
</>
);
}
export default News;
+4 -4
View File
@@ -38,7 +38,7 @@ function NextAfterHero() {
</div>
<h4 className="title">Carefully designed</h4>
<p>
He lost his bottle loo don't get shirty with me ruddy.
He lost his bottle loo don&#39;t get shirty with me ruddy.
</p>
</div>
</div>
@@ -60,7 +60,7 @@ function NextAfterHero() {
</div>
<h4 className="title">Clean Modern Code</h4>
<p>
He lost his bottle loo don't get shirty with me ruddy.
He lost his bottle loo don&#39;t get shirty with me ruddy.
</p>
</div>
</div>
@@ -82,7 +82,7 @@ function NextAfterHero() {
</div>
<h4 className="title">User Interactive</h4>
<p>
He lost his bottle loo don't get shirty with me ruddy.
He lost his bottle loo don&#39;t get shirty with me ruddy.
</p>
</div>
</div>
@@ -104,7 +104,7 @@ function NextAfterHero() {
</div>
<h4 className="title">Choose a App</h4>
<p>
He lost his bottle loo don't get shirty with me ruddy.
He lost his bottle loo don&#39;t get shirty with me ruddy.
</p>
</div>
</div>
+42
View File
@@ -0,0 +1,42 @@
import React from 'react';
function PopupVideo({ videoSrc, handler }) {
/*
//www.youtube.com/embed/EE7NqzhMDms?autoplay=1
*/
return (
<div>
<div onClick={handler} className="mfp-bg mfp-ready"></div>
<div
className="mfp-wrap mfp-close-btn-in mfp-auto-cursor mfp-ready"
tabIndex="-1"
style={{ overflow: ' hidden auto' }}
>
<div className="mfp-container mfp-s-ready mfp-iframe-holder">
<div className="mfp-content">
<div className="mfp-iframe-scaler">
<button
onClick={handler}
title="Close (Esc)"
type="button"
className="mfp-close"
>
×
</button>
<iframe
title="video"
className="mfp-iframe"
src={videoSrc}
frameBorder="0"
allowFullScreen=""
/>
</div>
</div>
<div className="mfp-preloader">Loading...</div>
</div>
</div>
</div>
);
}
export default PopupVideo;
+2 -1
View File
@@ -1,4 +1,5 @@
import React from 'react';
import Image from 'next/image';
function ProjectHomeOne() {
return (
@@ -29,7 +30,7 @@ function ProjectHomeOne() {
</div>
</div>
<div className="appie-project-thumb">
<img src="assets/images/project-thumb.png" alt="" />
<Image width='auto' height='auto' src="assets/images/project-thumb.png" alt="" />
</div>
</div>
</div>
+2 -2
View File
@@ -60,11 +60,11 @@ titleLen(title){
<div className="row">
{
this.state.jobsDataResults.map(i => {
this.state.jobsDataResults.map((i, index) => {
var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
var postDt = new Date(i.expire).toLocaleDateString("en-US", options);
return (<div className="col-md-6 col-xl-3">
return (<div key={index} className="col-md-6 col-xl-3">
<div
className="appie-single-service container-fluid mt-30 wow animated fadeInUp boxBorder d-flex align-items-center"
data-wow-duration="3000ms"
+264
View File
@@ -0,0 +1,264 @@
"use client"
import React, { useState } from 'react';
//import { Link } from 'react-router-dom';
import thumb from '../assets/images/features-thumb-11.png';
import shapeSix from '../assets/images/shape/shape-6.png';
import shapeSeven from '../assets/images/shape/shape-7.png';
import shapeEight from '../assets/images/shape/shape-8.png';
import Image from 'next/image';
function SelectFeatures({ className }) {
const [tab, setTab] = useState('setting');
const handleClick = (e, value) => {
e.preventDefault();
setTab(value);
};
//appie-services-2-area appie-services-8-area pt-90 pb-55
return (
<section className={`appie-features-area pt-100 ${className}`} id="features" >
<div className="container" style={{ marginBottom: '20px' }} >
<div className="row align-items-center">
<div className="col-lg-3">
<div className="appie-features-tabs-btn">
<div
className="nav flex-column nav-pills"
id="v-pills-tab"
role="tablist"
aria-orientation="vertical"
>
<a
onClick={(e) => handleClick(e, 'setting')}
className={`nav-link ${tab === 'setting' ? 'active' : ''}`}
id="v-pills-home-tab"
data-toggle="pill"
href="#v-pills-home"
role="tab"
aria-controls="v-pills-home"
aria-selected="true"
>
<i className="fas fa-cog" /> Reward achievement
</a>
<a
onClick={(e) => handleClick(e, 'report')}
className={`nav-link ${tab === 'report' ? 'active' : ''}`}
id="v-pills-profile-tab"
data-toggle="pill"
href="#v-pills-profile"
role="tab"
aria-controls="v-pills-profile"
aria-selected="false"
>
<i className="fas fa-exclamation-triangle" /> Assign tasks or chores
</a>
<a
onClick={(e) => handleClick(e, 'notice')}
className={`nav-link ${tab === 'notice' ? 'active' : ''}`}
id="v-pills-messages-tab"
data-toggle="pill"
href="#v-pills-messages"
role="tab"
aria-controls="v-pills-messages"
aria-selected="false"
>
<i className="fas fa-bell" /> Family engagement
</a>
<a
onClick={(e) => handleClick(e, 'app')}
className={`nav-link ${tab === 'app' ? 'active' : ''}`}
id="v-pills-settings-tab"
data-toggle="pill"
href="#v-pills-settings"
role="tab"
aria-controls="v-pills-settings"
aria-selected="false"
>
<i className="fas fa-lock" /> Fund wallets
</a>
</div>
</div>
</div>
<div className="col-lg-9">
<div className="tab-content" id="v-pills-tabContent">
<div
className={`${
tab === 'setting' ? 'show active' : ''
} tab-pane fade`}
id="v-pills-home"
role="tabpanel"
aria-labelledby="v-pills-home-tab"
>
<div className="row align-items-center">
<div className="col-lg-6">
<div
className="appie-features-thumb text-center wow animated fadeInUp"
data-wow-duration="2000ms"
data-wow-delay="200ms"
>
<Image src={thumb} alt=""
style={{ width: '350px', height:'auto', margin: 'auto' }} />
</div>
</div>
<div className="col-lg-6">
<div
className="appie-features-content wow animated fadeInRight"
data-wow-duration="2000ms"
data-wow-delay="600ms"
>
<span>
{/*Reward Achievement*/}
</span>
<h3 className="title">
Reward <br /> Achievement
</h3>
<p>
Reward with points, badges, recognition, or money rewards with easy steps
</p>
<a className="main-btn" href="/about-us">
Learn More
</a>
</div>
</div>
</div>
</div>
<div
className={`${tab === 'report' ? 'show active' : ''} tab-pane fade`}
id="v-pills-profile"
role="tabpanel"
aria-labelledby="v-pills-profile-tab"
>
<div className="row align-items-center">
<div className="col-lg-6">
<div
className="appie-features-thumb text-center animated fadeInUp"
data-wow-duration="2000ms"
data-wow-delay="200ms"
>
<Image src={thumb} alt=""
style={{ width: '350px', height:'auto', margin: 'auto' }} />
</div>
</div>
<div className="col-lg-6">
<div
className="appie-features-content animated fadeInRight"
data-wow-duration="2000ms"
data-wow-delay="600ms"
>
<span>
{/*Reward Achievement ee*/}
</span>
<h3 className="title">
Assign <br /> tasks or chores
</h3>
<p>
Adapt to your family&#39;s needs with the flexibility of using one-time or repeated tasks or chores with the option to find any task.
</p>
<a className="main-btn" href="#">
Learn More
</a>
</div>
</div>
</div>
</div>
<div
className={`${tab === 'notice' ? 'show active' : ''} tab-pane fade`}
id="v-pills-messages"
role="tabpanel"
aria-labelledby="v-pills-messages-tab"
>
<div className="row align-items-center">
<div className="col-lg-6">
<div
className="appie-features-thumb text-center animated fadeInUp"
data-wow-duration="2000ms"
data-wow-delay="200ms"
>
<Image src={thumb} alt=""
style={{ width: '350px', height:'auto', margin: 'auto' }} />
</div>
</div>
<div className="col-lg-6">
<div
className="appie-features-content animated fadeInRight"
data-wow-duration="2000ms"
data-wow-delay="600ms"
>
<span>
{/*Custom Reacyions 77*/}
</span>
<h3 className="title">
Family <br /> engagement
</h3>
<p>
Connect with education challenges, such as quizzes or learning tasks, and private chats, and invite others to your family.
</p>
<a className="main-btn" href="#">
Learn More
</a>
</div>
</div>
</div>
</div>
<div
className={`${tab === 'app' ? 'show active' : ''} tab-pane fade`}
id="v-pills-settings"
role="tabpanel"
aria-labelledby="v-pills-settings-tab"
>
<div className="row align-items-center">
<div className="col-lg-6">
<div
className="appie-features-thumb text-center animated fadeInUp"
data-wow-duration="2000ms"
data-wow-delay="200ms"
>
<Image src={thumb} alt=""
style={{ width: '350px', height:'auto', margin: 'auto' }} />
</div>
</div>
<div className="col-lg-6">
<div
className="appie-features-content animated fadeInRight"
data-wow-duration="2000ms"
data-wow-delay="600ms"
>
<span>
{/*Reward Achievement*/}
</span>
<h3 className="title">
Fund <br /> wallets
</h3>
<p>
Take control and feel secure by creating a virtual or physical card, allocating funds, and managing wallets for your kids. .
</p>
<a className="main-btn" href="#">
Learn More
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{/*<div className="features-shape-1">*/}
{/* <Image src={shapeSix} alt="" />*/}
{/*</div>*/}
{/*<div className="features-shape-2">*/}
{/* <Image src={shapeSeven} alt="" />*/}
{/*</div>*/}
{/*<div className="features-shape-3">*/}
{/* <Image src={shapeEight} alt="" />*/}
{/*</div>*/}
</section>
);
}
export default SelectFeatures;
+83
View File
@@ -0,0 +1,83 @@
import React from 'react';
import Image from 'next/image';
import AboutIcon from '../assets/images/icon/about-us.ico'
import HomeIcon from '../assets/images/icon/home-icon.ico'
import UseCaseIcon from '../assets/images/icon/use-case.ico'
import PrivacyIcon from '../assets/images/icon/privacy-policy.ico'
import TermsIcon from '../assets/images/icon/term-and-conditions.ico'
function ServiceSideMenu() {
return (
<>
<div className="service-details-sidebar mr-50">
<div className="service-download-widget">
<a href="/">
{/* <i className="fal fa-download"></i> */}
<Image src={HomeIcon} alt='sidenav-icon' width={'auto'} height={'auto'} />
<span>Home</span>
</a>
</div>
<div className="service-download-widget">
<a href="/about-us">
{/* <i className="fal fa-download"></i> */}
<Image src={AboutIcon} alt='sidenav-icon' width={'auto'} height={'auto'} />
<span>About us</span>
</a>
</div>
<div className="service-download-widget">
<a href="/use-cases">
{/* <i className="fal fa-file-pdf"></i> */}
<Image src={UseCaseIcon} alt='sidenav-icon' width={'auto'} height={'auto'} />
<span>Use Cases</span>
</a>
</div>
<div className="service-download-widget">
<a href="/privacy">
{/* <i className="fal fa-download"></i> */}
<Image src={PrivacyIcon} alt='sidenav-icon' width={'auto'} height={'auto'} />
<span>Privacy Policy</span>
</a>
</div>
<div className="service-download-widget">
<a href="/terms">
{/* <i className="fal fa-file-pdf"></i> */}
<Image src={TermsIcon} alt='sidenav-icon' width={'auto'} height={'auto'} />
<span>Terms of use</span>
</a>
</div>
<div className="service-category-widget">
<ul>
<li>
Get WrenchBoard App
</li>
<li>
<a href={process.env.NEXT_PUBLIC_APPLE_APP}>
<i className="fab fa-apple" /> Download for iOS
</a>
</li>
<li>
<a className="item-2" href={process.env.NEXT_PUBLIC_ANDROID_APP}>
<i className="fab fa-google-play" /> Download for
Android
</a>
</li>
</ul>
</div>
</div>
</>
);
}
export default ServiceSideMenu;
+2 -1
View File
@@ -4,6 +4,7 @@ import IconTwo from '../assets/images/icon/assign-chores.png';
import IconThree from '../assets/images/icon/financial-education.png';
import IconFour from '../assets/images/icon/family-connect.png';
import Main from '../lnd/LndParts/Design/Main';
import Image from 'next/image';
function ServiceItem({ icon, title, description, index }) {
return (
@@ -14,7 +15,7 @@ function ServiceItem({ icon, title, description, index }) {
style={{ cursor: "default" }}
>
<div className="icon">
<img src={icon} alt={title} width={70} height={70} loading="lazy" />
<Image src={icon} alt={title} width={70} height={70} loading="lazy" />
</div>
<h4 className="appie-title">{title}</h4>
<p>{description}</p>
+5 -4
View File
@@ -1,4 +1,5 @@
import React from 'react';
import Image from 'next/image';
import teamOne from '../../assets/images/Olu-Amey-001.jpg';
import teamTwo from '../../assets/images/team-2.jpg';
import teamThree from '../../assets/images/Toks-Law.jpg';
@@ -25,7 +26,7 @@ function TeamHomeOne() {
data-wow-delay="200ms"
>
<div className="thumb">
<img src={teamOne} alt="" />
<Image width='auto' height='auto' src={teamOne} alt="" />
<ul>
<li>
<a href="#">
@@ -57,7 +58,7 @@ function TeamHomeOne() {
data-wow-delay="400ms"
>
<div className="thumb">
<img src={teamTwo} alt="" />
<Image width='auto' height='auto' src={teamTwo} alt="" />
<ul>
<li>
<a href="#">
@@ -89,7 +90,7 @@ function TeamHomeOne() {
data-wow-delay="600ms"
>
<div className="thumb">
<img src={teamThree} alt="" />
<Image width='auto' height='auto' src={teamThree} alt="" />
<ul>
<li>
<a href="#">
@@ -121,7 +122,7 @@ function TeamHomeOne() {
data-wow-delay="800ms"
>
<div className="thumb">
<img src={teamFour} alt="" />
<Image width='auto' height='auto' src={teamFour} alt="" />
<ul>
<li>
<a href="#">
+5 -4
View File
@@ -1,4 +1,5 @@
import React, { useRef } from 'react';
import Image from 'next/image';
import Slider from 'react-slick';
import 'slick-carousel/slick/slick-theme.css';
import 'slick-carousel/slick/slick.css';
@@ -30,13 +31,13 @@ function TestimonialHomeOne() {
<Slider ref={sliderRef} dots arrows={false}>
<div className="appie-testimonial-item text-center">
<div className="author-info">
<img src={user} alt="" />
<Image width='auto' height='auto' src={user} alt="" />
<h5 className="title">Lanta Greece</h5>
<span>July, 2021</span>
</div>
<div className="text">
<p>
Loving what you do to earn an income is the new word of mouth. I would absolutely recommend WrenchBoard.It 's so easy to use and you get paid instantly.
Loving what you do to earn an income is the new word of mouth. I would absolutely recommend WrenchBoard.It&#39;s so easy to use and you get paid instantly.
</p>
<ul>
<li>
@@ -59,7 +60,7 @@ function TestimonialHomeOne() {
</div>
<div className="appie-testimonial-item text-center">
<div className="author-info">
<img src={user} alt="" />
<Image width='auto' height='auto' src={user} alt="" />
<h5 className="title">Jason Response</h5>
<span>April 14, 2022</span>
</div>
@@ -90,7 +91,7 @@ function TestimonialHomeOne() {
</div>
<div className="appie-testimonial-item text-center">
<div className="author-info">
<img src={user} alt="" />
<Image width='auto' height='auto' src={user} alt="" />
<h5 className="title">Jason Response</h5>
<span>April 14, 2022</span>
</div>
+3 -2
View File
@@ -1,4 +1,5 @@
import React from 'react';
import Image from 'next/image';
import heroThumbOne from '../../assets/images/Actualize.jpg';
import heroThumbTwo from '../../assets/images/hero-thumb-2.png';
import shapeTwo from '../../assets/images/shape/shape-2.png';
@@ -42,14 +43,14 @@ function WrenchBoardHome() {
data-wow-duration="2000ms"
data-wow-delay="200ms"
>
<img src={heroThumbOne} alt="" />
<Image width='auto' height='auto' src={heroThumbOne} alt="" />
</div>
<div
className="thumb-2 wow animated fadeInRight"
data-wow-duration="2000ms"
data-wow-delay="600ms"
>
<img src={heroThumbTwo} alt="" />
<Image width='auto' height='auto' src={heroThumbTwo} alt="" />
</div>
</div>
</div>
+15
View File
@@ -0,0 +1,15 @@
"use client"
import React from 'react'
import useToggle from '../../Hooks/useToggle'
import HomeOneHeader from '../HomeOneHeader'
import Drawer from '../../Mobile/Drawer'
export default function HomeNav() {
const [drawer, drawerAction] = useToggle(false);
return (
<>
<Drawer drawer={drawer} action={drawerAction.toggle} />
<HomeOneHeader action={drawerAction.toggle} />
</>
)
}
+35
View File
@@ -0,0 +1,35 @@
import Link from 'next/link';
import React from 'react';
function Navigation() {
return (
<>
<ul>
<li>
<Link href="/">Home</Link>
</li>
<li>
<Link href="/about-us">About</Link>
</li>
{/* <li>
<a href="#">
Resources <i className="fal fa-angle-down" />
</a>
<ul className="sub-menu">
<li>
<Link to="/about-us">About</Link>
</li>
<li>
<Link to="/blog">Blog</Link>
</li>
<li>
<Link to="/faq">FAQs</Link>
</li>
</ul>
</li> */}
</ul>
</>
);
}
export default Navigation;
+20
View File
@@ -0,0 +1,20 @@
"use client"
import React, {useEffect} from 'react'
import useToggle from '../../Hooks/useToggle'
import Drawer from '../../Mobile/Drawer'
import Services from './Services'
import StickyMenu from '../../lib/StickyMenu';
export default function ServiceNav() {
const [drawer, drawerAction] = useToggle(false);
useEffect(() => {
StickyMenu();
});
return (
<>
<Drawer drawer={drawer} action={drawerAction.toggle} />
<Services action={drawerAction.toggle} />
</>
)
}
+51
View File
@@ -0,0 +1,51 @@
import React from 'react';
import logo from '../../assets/images/wrenchboard-logo-text.png';
import Navigation from './Navigation';
import Image from 'next/image';
import Link from 'next/link';
function Services({ action }) {
return (
<>
<header className="appie-header-area appie-header-page-area appie-sticky">
<div className="container">
<div className="header-nav-box header-nav-box-3 header-nav-box-inner-page">
<div className="row align-items-center">
<div className="col-lg-2 col-md-4 col-sm-5 col-6 order-1 order-sm-1">
<div className="wrench-logo-box">
<Link href="/">
<Image src={logo} alt="WrenchBoard" loading='eager' width="175" height="38" />
</Link>
</div>
</div>
<div className="col-lg-6 col-md-1 col-sm-1 order-3 order-sm-2">
<div className="appie-header-main-menu">
<Navigation />
</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.NEXT_PUBLIC_DASH_URL_LOGIN}>
<i className="fal fa-user"></i> Login
</a>
<a className="main-btn ml-30" href={process.env.NEXT_PUBLIC_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"></i>
</div>
</div>
</div>
</div>
</div>
</div>
</header>
</>
);
}
export default Services;
+202
View File
@@ -0,0 +1,202 @@
"use client"
import React, {useState} from 'react';
import ContactData from '../Services/ContactData';
function Forms() {
const [formDetails, setFormDetails] = useState({
first_name: '',
last_name: '',
email: '',
subject: '',
phone_number: '',
action: 1001,
message: '',
channel: 'WEB',
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}}) => {
setFormDetails(prev => ({...prev, [name]:value}))
}
const [requestStatus, setRequestStatus] = useState({loading:false, status:false, msg:''})
function handleSubmit(e) {
e.preventDefault()
setRequestStatus({loading:true, status:false, msg:''})
if(!validForm){
setRequestStatus({loading:false, status:false, msg:'please, fill all fields'})
setTimeout(()=>{
setRequestStatus({loading:false, status:false, msg:''})
},3000)
return
}
delete formDetails.terms_conditions
ContactData(formDetails).then(res =>{
if(res?.data?.result != '100'){
setRequestStatus({loading:false, status:false, msg:'failed to send message'})
setTimeout(()=>{
setRequestStatus({loading:false, status:false, msg:''})
},3000)
return
}
setRequestStatus({loading:false, status:true, msg:'message Sent'})
setTimeout(()=>{
setRequestStatus({loading:false, status:false, msg:''})
setFormDetails({
first_name: '',
last_name: '',
email: '',
subject: '',
phone_number: '',
action: 1001,
message: '',
channel: 'WEB',
terms_conditions: false
})
},3000)
}).catch(err => {
setRequestStatus({loading:false, status:false, msg:'failed something went wrong'})
setTimeout(()=>{
setRequestStatus({loading:false, status:false, msg:''})
},3000)
});
}
return (
<>
<section className="contact-section">
<div className="container">
<div className="row">
<div className="col-md-4">
<div className="contact--info-area">
<h3>Get in touch</h3>
<p>Looking for help? Fill the form and start a new discussion.</p>
<div className="single-info">
<h5>Headquaters</h5>
<p>
<i className="fal fa-home"></i>
{process.env.NEXT_PUBLIC_SUPPORT_US_ADDRESS}
</p>
</div>
<div className="single-info">
<h5>Phone</h5>
<p>
<i className="fal fa-phone"></i>
{process.env.NEXT_PUBLIC_SUPPORT_PHONE}
<br />
</p>
</div>
<div className="single-info">
<h5>Support</h5>
<p>
<i className="fal fa-envelope"></i>
{process.env.NEXT_PUBLIC_SUPPORT_EMAIL}
</p>
</div>
<div className="ab-social">
<h5>Follow Us</h5>
<a className="fac" href={process.env.NEXT_PUBLIC_FACEBOOK_LINK}>
<i className="fab fa-facebook-f"></i>
</a>
<a className="twi" href={process.env.NEXT_PUBLIC_TWITTER_LINK}>
{/* <i className="fab fa-twitter"></i> */}
<i className="fab fa-x-twitter" />
</a>
<a className="you" href="#">
<i className="fab fa-youtube"></i>
</a>
<a className="lin" href={process.env.NEXT_PUBLIC_LINKEDIN_LINK}>
<i className="fab fa-linkedin-in"></i>
</a>
</div>
</div>
</div>
<div className="col-md-8">
<div className="contact-form">
<h4>Lets Connect</h4>
<form onSubmit={handleSubmit} className="row">
<div className="col-md-6">
<input type="text" name="first_name" placeholder="First Name" maxLength={15} onChange={handleChange} value={formDetails.first_name} />
</div>
<div className="col-md-6">
<input type="text" name="last_name" placeholder="Last Name" maxLength={15} onChange={handleChange} value={formDetails.last_name} />
</div>
<div className="col-md-6">
<input
type="email"
name="email"
placeholder="Email Address"
maxLength={35}
onChange={handleChange}
value={formDetails.email}
/>
</div>
<div className="col-md-6">
<input
type="number"
name="phone_number"
placeholder="Phone Number"
maxLength={15}
onChange={handleChange}
value={formDetails.phone_number}
/>
</div>
<div className="col-md-12">
<input type="text" name="subject" placeholder="Subject" maxLength={35} value={formDetails.subject} onChange={handleChange} />
</div>
<div className="col-md-12">
<textarea
name="message"
placeholder="How can we help?"
onChange={handleChange}
value={formDetails.message}
></textarea>
</div>
<div className="col-md-6">
<div className="condition-check">
<input id="terms-conditions" name="terms_conditions" type="checkbox" value={formDetails.terms_conditions} onChange={handleChange} />
<label htmlFor="terms-conditions">
I agree to the <a href="#">Terms & Conditions</a>
</label>
</div>
</div>
<div className="col-md-6 text-right">
<input
type="submit"
value={ requestStatus.loading ? 'Sending...' : 'Send Message'}
disabled={requestStatus.loading}
className={`${!validForm ? 'opacity-25' : 'opacity-100'}`}
/>
</div>
{/* <div className="p-2 col-12">
{requestStatus.msg &&
}
</div> */}
<p className={`p-1 w-100 text-center ${requestStatus.status ? 'text-success' : 'text-danger'}`}>{requestStatus.msg}</p>
</form>
</div>
</div>
</div>
</div>
</section>
<div className="bisylms-map">
<iframe
title="map"
src="https://maps.google.com/maps?width=720&amp;height=600&amp;hl=en&amp;coord=33.8573837,-84.4766235&amp;q=Cumberland+Pkwy+SE,+Atlanta,+GA+30339&amp;ie=UTF8&amp;t=p&amp;z=16&amp;iwloc=B&amp;output=embed"
></iframe>
</div>
</>
);
}
export default Forms;
+37
View File
@@ -0,0 +1,37 @@
import React from 'react'
import FooterHomeOne from '../components/FooterHomeOne';
import BackToTop from '../components/BackToTop';
import HeroNews from '../components/News/HeroNews';
import ServiceNav from '../components/navigation/ServiceNav';
import Forms from './Forms'
// must be a better way to centralize the style = TEMPORARY USE
import '../assets/css/bootstrap.min.css';
import '../assets/css/custom-animated.css';
import '../assets/css/default.css';
import '../assets/css/font-awesome.min.css';
import '../assets/css/magnific-popup.css';
import '../assets/css/main.css';
import '../assets/css/style.css';
function page() {
return (
<>
<ServiceNav />
<HeroNews
title="Contact us"
breadcrumb={[
{ link: '/', title: 'home' },
{ link: '/contact', title: 'Contact' },
]}
/>
<Forms />
<FooterHomeOne className='' />
<BackToTop className='' />
</>
)
}
export default page
+116
View File
@@ -0,0 +1,116 @@
"use client"
import React, { useEffect, useState } from 'react';
import Image from 'next/image';
import Link from 'next/link';
import ServiceSideMenu from '../components/ServiceSideMenu';
import FaqData from '../Services/FaqData';
import Arrow from '../assets/images/arrow-down.png'
function FAQService() {
const [isOpen, setOpen] = React.useState({type: 'faq0'});
const accordionHandler = (name) => {
setOpen(prev => {
if(prev.type == name){
return {type: ''}
}else {
return {type: name}
}
});
};
let [faq, setFaq] = useState([])
useEffect(()=>{
FaqData().then(res => {
setFaq(res.data.result_list)
}).catch(err => {
console.log('You got an error ========> '+ err)
})
},[])
return (
<>
<section className="appie-service-details-area pt-100 pb-100">
<div className="container">
<div className="row">
<div className="col-lg-4">
<ServiceSideMenu />
</div>
<div className="col-lg-8 accordion-wrapper">
<div className="p-3 service-details-content accordion-con">
<div className="container-fluid">
<div className='content'>
<h3 className='p-3 text-center title'>Frequently asked questions</h3>
</div>
</div>
<div className='row'>
<div class="col-12 col-lg-6 accordion" id="accordionExample">
{faq.map((item, index)=>{
if(index%2 == 0 && item.public != 0){
return(
<div key={index} className='my-3'>
<Accordion name={`faq${index}`} datas={item} accordionHandler={accordionHandler} isOpen={isOpen} />
</div>
)
}
})}
</div>
<div class="col-12 col-lg-6 accordion" id="accordionExample">
{faq.map((item, index)=>{
if(index%2 != 0 && item.public != 0){
return(
<div key={index} className='my-3'>
<Accordion name={`faq${index}`} datas={item} accordionHandler={accordionHandler} isOpen={isOpen} />
</div>
)
}
})}
</div>
</div>
<div className='container-fluid text-center'>
<p className='my-4'>Can&#39;t find an answer <Link href='/contact'>contact us</Link> </p>
</div>
</div>
</div>
</div>
</div>
</section>
</>
);
}
export default FAQService;
export function Accordion({ datas, name, accordionHandler, isOpen }) {
return (
<>
<div className="accordion-item">
<div
className="accordion-title-bar container-fluid"
onClick={()=>{accordionHandler(name)}}
>
<div className="accordion-title">
<p className="">
{datas.title}
</p>
</div>
<div className="accordion-title-icon">
<span className={`horizontal ${isOpen.type == name ? 'vertical' : ''}`}>
<Image width='auto' height='auto' className="" src={Arrow} alt='image' />
</span>
</div>
</div>
<div className={`${isOpen.type == name ? "accordion-body-show" : "accordion-body-hide"}`}>
<div className="accordion-body-content" style={{display: 'flex', padding: '10px'}}>
<div className="rounded-[28px]" style={{width: '3px', backgroundColor: 'skyblue'}}></div>
<div className="flex-1">
<p className="" style={{padding: '0px 10px', letterSpacing:'.5px'}}>
{datas.msg}
</p>
</div>
</div>
</div>
</div>
</>
);
}
+37
View File
@@ -0,0 +1,37 @@
import React from 'react'
import ServiceNav from '../components/navigation/ServiceNav';
import HeroNews from '../components/News/HeroNews';
import FAQService from './FAQService'
import FooterHomeOne from '../components/FooterHomeOne';
import BackToTop from '../components/BackToTop';
// must be a better way to centralize the style = TEMPORARY USE
import '../assets/css/bootstrap.min.css';
import '../assets/css/custom-animated.css';
import '../assets/css/default.css';
import '../assets/css/font-awesome.min.css';
import '../assets/css/magnific-popup.css';
import '../assets/css/main.css';
import '../assets/css/style.css';
function page() {
return (
<>
<ServiceNav />
<HeroNews
title="Frequently asked questions"
breadcrumb={[
{ link: '/', title: 'Home' },
{ link: '/faq', title: 'Faq' },
]}
/>
<FAQService />
<FooterHomeOne className='' />
<BackToTop className='' />
</>
)
}
export default page
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

+30 -2
View File
@@ -1,12 +1,13 @@
import type { Metadata } from "next";
import { Inter } from "next/font/google";
import "./globals.css";
import Script from "next/script";
const inter = Inter({ subsets: ["latin"] });
export const metadata: Metadata = {
title: "Create Next App",
description: "Generated by create next app",
title: "WrenchBoard: Reward Accomplishments | Get Family Engaged",
description: "Empower families to reward accomplishment, set goals, and encourage kids to understand goals",
};
export default function RootLayout({
@@ -31,6 +32,33 @@ export default function RootLayout({
<meta property="og:image" content="%PUBLIC_URL%/favicon-32x32.png" />
<body className={inter.className}>{children}</body>
<Script id='chat-support'>
{`
var LHC_API = LHC_API || {};
LHC_API.args = {
mode: "widget",
lhc_base_url: "//chat.live.wrenchboard.com/",
wheight: 450,
wwidth: 350,
pheight: 520,
pwidth: 500,
leaveamessage: true,
check_messages: false,
};
(function () {
var po = document.createElement("script");
po.type = "text/javascript";
po.setAttribute("crossorigin", "anonymous");
po.async = true;
var date = new Date();
po.src =
"//chat.live.wrenchboard.com/design/defaulttheme/js/widgetv2/index.js?" +
("" + date.getFullYear() + date.getMonth() + date.getDate());
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(po, s);
})();
`}
</Script>
</html>
);
}
+9 -6
View File
@@ -1,4 +1,6 @@
"use client"
import React, { useEffect, useRef, useState } from 'react';
import Image from 'next/image';
/**
* Renders an image lazily using the Intersection Observer API.
@@ -12,12 +14,13 @@ function LazyImage({ src, alt }) {
const [isVisible, setIsVisible] = useState(false);
useEffect(() => {
const currentRef = imgRef.current
const observer = new IntersectionObserver(
(entries) => {
const [entry] = entries;
if (entry.isIntersecting) {
setIsVisible(true);
observer.unobserve(imgRef.current); // Stop observing once the image is in the viewport
observer.unobserve(currentRef); // Stop observing once the image is in the viewport
}
},
{
@@ -27,19 +30,19 @@ function LazyImage({ src, alt }) {
}
);
if (imgRef.current) {
observer.observe(imgRef.current);
if (currentRef) {
observer.observe(currentRef);
}
return () => {
if (imgRef.current) {
observer.unobserve(imgRef.current);
if (currentRef) {
observer.unobserve(currentRef);
}
};
}, []);
return (
<img
<Image width='auto' height='auto'
ref={imgRef}
src={isVisible ? src : ''}
alt={alt}
+23 -22
View File
@@ -27,6 +27,7 @@
import React , {useState, useEffect} from 'react'
import Image from 'next/image'
//import { HashLink as Link } from 'react-router-hash-link';
import Design from './LndParts/Design/Main'
import Work from './LndParts/Work/Main'
@@ -63,7 +64,7 @@ const Lnd = ({setnavbar,setfooter,setbrdcum}) => {
<div className="container">
<nav className="navbar navbar-expand-lg">
<Link to="/" className="navbar-brand">
<img src="assets/images/logo.png" alt="image" />
<Image width='auto' height='auto' src="assets/images/logo.png" alt="image" />
</Link>
<button className="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
@@ -138,9 +139,9 @@ const Lnd = ({setnavbar,setfooter,setbrdcum}) => {
<section className="banner_section homedark-banner min-vh-100">
<div className="container">
<div className="row position-relative">
<span className="position-absolute banner_shape1"> <img src={localImgLoad('images/banner-shape-one1.png')} width='10px' alt="image" /> </span>
<span className="position-absolute banner_shape2"> <img src={localImgLoad('images/banner-shape2two.png')} width='10px' alt="image" /> </span>
<span className="position-absolute banner_shape3"> <img src={localImgLoad('images/banner-shapethree3.png')} width='10px' alt="image" /> </span>
<span className="position-absolute banner_shape1"> <Image height='auto' src={localImgLoad('images/banner-shape-one1.png')} width='10px' alt="image" /> </span>
<span className="position-absolute banner_shape2"> <Image height='auto' src={localImgLoad('images/banner-shape2two.png')} width='10px' alt="image" /> </span>
<span className="position-absolute banner_shape3"> <Image height='auto' src={localImgLoad('images/banner-shapethree3.png')} width='10px' alt="image" /> </span>
<div className="col-12 col-lg-6 mx-auto text-center" data-aos="fade-right" data-aos-duration="1500">
<div className="banner_text my-3 p-4">
@@ -151,7 +152,7 @@ const Lnd = ({setnavbar,setfooter,setbrdcum}) => {
<div className="thumbnil">
<a className="popup-youtube play-button" onClick = {() => setytShow(true)} data-url="#" data-toggle="modal" data-target="#myModal" title="XJj2PbenIsU">
{/* <span className="play_btn position-relative">
<img src={localImgLoad('images/play_icon.png')} className='position-relative' width='30px' height='30px' alt="image" />
<Image src={localImgLoad('images/play_icon.png')} className='position-relative' width='30px' height='30px' alt="image" />
<div className="waves-block">
<div className="waves wave-1"></div>
<div className="waves wave-2"></div>
@@ -159,7 +160,7 @@ const Lnd = ({setnavbar,setfooter,setbrdcum}) => {
</div>
</span> */}
<span className="play_btn position-relative rounded-circle d-flex justify-content-center align-items-center">
<img src={localImgLoad('images/play_icon.png')} className='p-1 position-relative rounded-circle' width='30px' height='30px' alt="image" />
<Image src={localImgLoad('images/play_icon.png')} className='p-1 position-relative rounded-circle' width='30px' height='30px' alt="image" />
</span>
</a>
</div>
@@ -172,30 +173,30 @@ const Lnd = ({setnavbar,setfooter,setbrdcum}) => {
<div className="img-con d-block d-sm-flex justify-content-around align-items-center gap-5">
<div className="col-lg-2 d-none d-lg-block">
<div className="banner_screen screen1 text-center">
<img className="moving_position_animatin" src={localImgLoad('images/hero-image-5.png')} alt="image" />
<Image width='auto' height='auto' className="moving_position_animatin" src={localImgLoad('images/hero-image-5.png')} alt="image" />
</div>
</div>
<div className="col-12 col-sm-4 col-lg-2">
<div className="banner_screen screen2 text-center">
<img className="moving_animation" src={localImgLoad('images/hero-image-4.png')} alt="image" />
<Image width='auto' height='auto' className="moving_animation" src={localImgLoad('images/hero-image-4.png')} alt="image" />
</div>
</div>
<div className="my-4 my-md-0 col-12 col-sm-4 col-lg-3">
<div className="banner_screen screen3 text-center">
<img className="moving_position_animatin" src={localImgLoad('images/hero-image-1.png')} alt="image" />
<Image width='auto' height='auto' className="moving_position_animatin" src={localImgLoad('images/hero-image-1.png')} alt="image" />
</div>
</div>
<div className="col-12 col-sm-4 col-lg-2">
<div className="banner_screen screen4 text-center">
<img className="moving_animation" src={localImgLoad('images/hero-image-2.png')} alt="image" />
<Image width='auto' height='auto' className="moving_animation" src={localImgLoad('images/hero-image-2.png')} alt="image" />
</div>
</div>
<div className="col-lg-2 d-none d-lg-block">
<div className="banner_screen screen5 text-center">
<img className="moving_position_animatin" src={localImgLoad('images/hero-image-3.png')} alt="image" />
<Image width='auto' height='auto' className="moving_position_animatin" src={localImgLoad('images/hero-image-3.png')} alt="image" />
</div>
</div>
</div>
@@ -208,14 +209,14 @@ const Lnd = ({setnavbar,setfooter,setbrdcum}) => {
<ul className="app_btn" data-aos="fade-in" data-aos-duration="1500">
<li>
<a href="#" className="app_store">
<img className="blue_img" src={localImgLoad('images/appstore_blue.png')} alt="image" />
<img className="white_img" src={localImgLoad('images/appstore_white.png')} alt="image" />
<Image width='auto' height='auto' className="blue_img" src={localImgLoad('images/appstore_blue.png')} alt="image" />
<Image width='auto' height='auto' className="white_img" src={localImgLoad('images/appstore_white.png')} alt="image" />
</a>
</li>
<li>
<a href="#">
<img className="blue_img" src={localImgLoad('images/googleplay_blue.png')} alt="image" />
<img className="white_img" src={localImgLoad('images/googleplay_white.png')} alt="image" />
<Image width='auto' height='auto' className="blue_img" src={localImgLoad('images/googleplay_blue.png')} alt="image" />
<Image width='auto' height='auto' className="white_img" src={localImgLoad('images/googleplay_white.png')} alt="image" />
</a>
</li>
</ul>
@@ -227,7 +228,7 @@ const Lnd = ({setnavbar,setfooter,setbrdcum}) => {
<div className="col-md-3 col-lg-3 col-sm-6 col-xs-12" data-aos="fade-up" data-aos-duration="1000">
<li>
<div className="icon">
<img src={localImgLoad('images/download-dark.png')} alt="image" />
<Image width='auto' height='auto' src={localImgLoad('images/download-dark.png')} alt="image" />
</div>
<div className="text">
<p><span className="counter-value" data-count="17">0</span><span>M+</span></p>
@@ -239,7 +240,7 @@ const Lnd = ({setnavbar,setfooter,setbrdcum}) => {
<div className="col-md-3 col-lg-3 col-sm-6 col-xs-12 " data-aos="fade-up" data-aos-duration="1200">
<li>
<div className="icon">
<img src={localImgLoad('images/followers-dark.png')} alt="image" />
<Image width='auto' height='auto' src={localImgLoad('images/followers-dark.png')} alt="image" />
</div>
<div className="text">
<p><span className="counter-value" data-count="08">0 </span><span>M+</span></p>
@@ -251,7 +252,7 @@ const Lnd = ({setnavbar,setfooter,setbrdcum}) => {
<div className="col-md-3 col-lg-3 col-sm-6 col-xs-12 " data-aos="fade-up" data-aos-duration="1400">
<li>
<div className="icon">
<img src={localImgLoad('images/reviews-dark.png')} alt="image" />
<Image width='auto' height='auto' src={localImgLoad('images/reviews-dark.png')} alt="image" />
</div>
<div className="text">
<p><span className="counter-value" data-count="2300">1500</span><span>+</span></p>
@@ -263,7 +264,7 @@ const Lnd = ({setnavbar,setfooter,setbrdcum}) => {
<div className="col-md-3 col-lg-3 col-sm-6 col-xs-12 " data-aos="fade-up" data-aos-duration="1600">
<li>
<div className="icon">
<img src={localImgLoad('images/countries-dark.png')} alt="image" />
<Image width='auto' height='auto' src={localImgLoad('images/countries-dark.png')} alt="image" />
</div>
<div className="text">
<p><span className="counter-value" data-count="150">0</span><span>+</span></p>
@@ -286,7 +287,7 @@ const Lnd = ({setnavbar,setfooter,setbrdcum}) => {
<div className="col-md-4">
<div className="feature_box" data-aos="fade-up" data-aos-duration="1500">
<div className="image">
<img src={localImgLoad('images/features1.png')} alt="image" />
<Image width='auto' height='auto' src={localImgLoad('images/features1.png')} alt="image" />
</div>
<div className="text">
<h4>Secure data</h4>
@@ -298,7 +299,7 @@ const Lnd = ({setnavbar,setfooter,setbrdcum}) => {
<div className="col-md-4">
<div className="feature_box" data-aos="fade-up" data-aos-duration="1700">
<div className="image">
<img src={localImgLoad('images/features2.png')} alt="image" />
<Image width='auto' height='auto' src={localImgLoad('images/features2.png')} alt="image" />
</div>
<div className="text">
<h4>Automate everything</h4>
@@ -310,7 +311,7 @@ const Lnd = ({setnavbar,setfooter,setbrdcum}) => {
<div className="col-md-4">
<div className="feature_box" data-aos="fade-up" data-aos-duration="1900">
<div className="image">
<img src={localImgLoad('images/features3.png')} alt="image" />
<Image width='auto' height='auto' src={localImgLoad('images/features3.png')} alt="image" />
</div>
<div className="text">
<h4>Secure data</h4>
+3 -3
View File
@@ -1,5 +1,5 @@
import { Link } from 'react-router-dom'
import React from 'react'
import Image from 'next/image';
//import frame from '../../../../assets/images/about-frame.png'
import frame from '../../../../assets/images/use-case-side-main.png'; //about-frame.png'
import screen from '../../../../assets/images/use-case-side-extra.png'; //about-screen.png'
@@ -17,10 +17,10 @@ const Main = ({ video, dark }) => {
<div className="col-lg-6">
<div className="about_img" data-aos="fade-in" data-aos-duration="1500">
<div className="frame_img">
<img className="moving_position_animatin" src={frame} alt="image" />
<Image width='auto' height='auto' className="moving_position_animatin" src={frame} alt="image" />
</div>
<div className="screen_img">
<img className="moving_animation" src={screen} alt="image" />
<Image width='auto' height='auto' className="moving_animation" src={screen} alt="image" />
</div>
</div>
</div>
+3 -2
View File
@@ -1,5 +1,6 @@
"use client"
import React, { useState } from 'react'
import Image from 'next/image'
//import localImgLoad from "../../../lib/localImgLoad"; // "../../../lib/localImgLoad";
// import img1 from '../../../../assets/images/modern01.png'
@@ -22,7 +23,7 @@ const Main = ({gredient}) => {
<section className={`row_am ${gredient && "gredient-bg"}`} >
{gredient &&
<div className="modernui_section_bg modernui-gredient">
<img src="assets/images/section-bg.png" alt="image"/>
<Image width='auto' height='auto' src="assets/images/section-bg.png" alt="image"/>
</div>
}
<div className="container">
@@ -43,7 +44,7 @@ const Main = ({gredient}) => {
</div>
<div className="row">
{list?.map(({ icon, header, paragraph, name }, idx) => (
<div className="col-12 mb-10" key={idx} onClick={()=>changeActiveImg(name)} style={{cursor: 'pointer'}}>
<div key={idx} className="col-12 mb-10" onClick={()=>changeActiveImg(name)} style={{cursor: 'pointer'}}>
<div
className={`appie-traffic-service features appie-modern-design`}
>
+17 -16
View File
@@ -1,5 +1,6 @@
import { Link } from 'react-router-dom'
import Link from 'next/link'
import React, {useState} from 'react'
import Image from 'next/image'
import img from '../../../../assets/images/anim_line.png'
import blueapp from '../../../../assets/images/appstore_blue.png'
import blue from '../../../../assets/images/googleplay_blue.png'
@@ -32,15 +33,15 @@ const Main = () => {
<div className="container">
<div className={`free_app_inner aos-init ${animate && "aos-animate"}`} data-aos="fade-in" data-aos-duration="1500" data-aos-delay="100">
<div className="anim_line dark_bg">
<span><img src={img} alt="anim_line" /></span>
<span><img src={img} alt="anim_line" /></span>
<span><img src={img} alt="anim_line" /></span>
<span><img src={img} alt="anim_line" /></span>
<span><img src={img} alt="anim_line" /></span>
<span><img src={img} alt="anim_line" /></span>
<span><img src={img} alt="anim_line" /></span>
<span><img src={img} alt="anim_line" /></span>
<span><img src={img} alt="anim_line" /></span>
<span><Image width='auto' height='auto' src={img} alt="anim_line" /></span>
<span><Image width='auto' height='auto' src={img} alt="anim_line" /></span>
<span><Image width='auto' height='auto' src={img} alt="anim_line" /></span>
<span><Image width='auto' height='auto' src={img} alt="anim_line" /></span>
<span><Image width='auto' height='auto' src={img} alt="anim_line" /></span>
<span><Image width='auto' height='auto' src={img} alt="anim_line" /></span>
<span><Image width='auto' height='auto' src={img} alt="anim_line" /></span>
<span><Image width='auto' height='auto' src={img} alt="anim_line" /></span>
<span><Image width='auto' height='auto' src={img} alt="anim_line" /></span>
</div>
<div className="row">
<div className="col-md-6">
@@ -52,13 +53,13 @@ const Main = () => {
</div>
<ul className="app_btn">
<li>
<Link to="#">
<img src={blueapp} alt="image" />
<Link href="#">
<Image width='auto' height='auto' src={blueapp} alt="image" />
</Link>
</li>
<li>
<Link to="#">
<img src={blue} alt="image" />
<Link href="#">
<Image width='auto' height='auto' src={blue} alt="image" />
</Link>
</li>
</ul>
@@ -66,8 +67,8 @@ const Main = () => {
</div>
<div className="col-md-6">
<div className="free_img">
<img src={screen} alt="image" />
<img className="mobile_mockup" src={screen1} alt="image" />
<Image width='auto' height='auto' src={screen} alt="image" />
<Image width='auto' height='auto' className="mobile_mockup" src={screen1} alt="image" />
</div>
</div>
</div>
+2 -1
View File
@@ -1,4 +1,5 @@
import React ,{ useState } from 'react'
import Image from 'next/image'
const Main = ({gredient}) => {
@@ -7,7 +8,7 @@ const Main = ({gredient}) => {
return (
<>
<section className="row_am faq_section">
{gredient && <div className="faq_bg"> <img src="assets/images/section-bg.png" alt="image"/> </div>}
{gredient && <div className="faq_bg"> <Image width='auto' height='auto' src="assets/images/section-bg.png" alt="image"/> </div>}
<div className="container">
<div className="section_title" data-aos="fade-up" data-aos-duration="1500" data-aos-delay="300">
<h2><span>FAQ</span> - Frequently Asked Questions</h2>
+11 -10
View File
@@ -1,4 +1,5 @@
import React from 'react'
import Image from 'next/image'
import img1 from '../../../assets/images/secure_data.png'
import img2 from '../../../assets/images/functional.png'
import img3 from '../../../assets/images/live-chat.png'
@@ -20,7 +21,7 @@ const Main = ({video}) => {
<div className="left_data feature_box">
<div className="data_block" data-aos="fade-right" data-aos-duration="1500">
<div className="icon">
<img src="assets/images/secure.png" alt="image" />
<Image width='auto' height='auto' src="assets/images/secure.png" alt="image" />
</div>
<div className="text">
<h4>Secure data</h4>
@@ -29,7 +30,7 @@ const Main = ({video}) => {
</div>
<div className="data_block" data-aos="fade-right" data-aos-duration="1500">
<div className="icon">
<img src="assets/images/abt_functional.png" alt="image" />
<Image width='auto' height='auto' src="assets/images/abt_functional.png" alt="image" />
</div>
<div className="text">
<h4>Fully functional</h4>
@@ -40,7 +41,7 @@ const Main = ({video}) => {
<div className="right_data feature_box">
<div className="data_block" data-aos="fade-left" data-aos-duration="1500">
<div className="icon">
<img src="assets/images/communication.png" alt="image"/>
<Image width='auto' height='auto' src="assets/images/communication.png" alt="image"/>
</div>
<div className="text">
<h4>Live chat</h4>
@@ -49,7 +50,7 @@ const Main = ({video}) => {
</div>
<div className="data_block" data-aos="fade-left" data-aos-duration="1500">
<div className="icon">
<img src="assets/images/abt_support.png" alt="image" />
<Image width='auto' height='auto' src="assets/images/abt_support.png" alt="image" />
</div>
<div className="text">
<h4>24-7 Support</h4>
@@ -58,7 +59,7 @@ const Main = ({video}) => {
</div>
</div>
<div className="feature_img" data-aos="fade-up" data-aos-duration="1500" data-aos-delay="100">
<img src="assets/images/features_frame.png" alt="image" />
<Image width='auto' height='auto' src="assets/images/features_frame.png" alt="image" />
</div>
</div>
</div>
@@ -75,7 +76,7 @@ const Main = ({video}) => {
<div className="left_data feature_box">
<div className="data_block" data-aos="fade-right" data-aos-duration="1500">
<div className="icon">
<img src={img1} alt="image" />
<Image width='auto' height='auto' src={img1} alt="image" />
</div>
<div className="text">
<h4>Secure data</h4>
@@ -84,7 +85,7 @@ const Main = ({video}) => {
</div>
<div className="data_block" data-aos="fade-right" data-aos-duration="1500">
<div className="icon">
<img src={img2} alt="image" />
<Image width='auto' height='auto' src={img2} alt="image" />
</div>
<div className="text">
<h4>Fully functional</h4>
@@ -95,7 +96,7 @@ const Main = ({video}) => {
<div className="right_data feature_box">
<div className="data_block" data-aos="fade-left" data-aos-duration="1500">
<div className="icon">
<img src={img3} alt="image"/>
<Image width='auto' height='auto' src={img3} alt="image"/>
</div>
<div className="text">
<h4>Live chat</h4>
@@ -104,7 +105,7 @@ const Main = ({video}) => {
</div>
<div className="data_block" data-aos="fade-left" data-aos-duration="1500">
<div className="icon">
<img src={img4} alt="image" />
<Image width='auto' height='auto' src={img4} alt="image" />
</div>
<div className="text">
<h4>24-7 Support</h4>
@@ -113,7 +114,7 @@ const Main = ({video}) => {
</div>
</div>
<div className="feature_img" data-aos="fade-up" data-aos-duration="1500" data-aos-delay="100">
<img src={img5} alt="image" />
<Image width='auto' height='auto' src={img5} alt="image" />
</div>
</div>
</div>
+7 -6
View File
@@ -1,5 +1,6 @@
import OwlCarousel from 'react-owl-carousel'
import React from 'react'
import Image from 'next/image'
import img1 from '../../../assets/images/screen-1.png'
import img2 from '../../../assets/images/screen-2.png'
import img3 from '../../../assets/images/screen-3.png'
@@ -42,32 +43,32 @@ const Main = () => {
<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={img1} alt="image" />
<Image width='auto' height='auto' src={img1} alt="image" />
</div>
</div>
<div className="item">
<div className="screen_frame_img">
<img src={img2} alt="image" />
<Image width='auto' height='auto' src={img2} alt="image" />
</div>
</div>
<div className="item">
<div className="screen_frame_img">
<img src={img3} alt="image" />
<Image width='auto' height='auto' src={img3} alt="image" />
</div>
</div>
<div className="item">
<div className="screen_frame_img">
<img src={img4} alt="image" />
<Image width='auto' height='auto' src={img4} alt="image" />
</div>
</div>
<div className="item">
<div className="screen_frame_img">
<img src={img5} alt="image" />
<Image width='auto' height='auto' src={img5} alt="image" />
</div>
</div>
<div className="item">
<div className="screen_frame_img">
<img src={img3} alt="image" />
<Image width='auto' height='auto' src={img3} alt="image" />
</div>
</div>
</OwlCarousel>
+28 -27
View File
@@ -1,5 +1,6 @@
import { Link } from 'react-router-dom'
import React , { useState} from 'react'
import Image from 'next/image'
import Link from 'next/link'
import img1 from '../../../assets/images/standard.png'
import img2 from '../../../assets/images/unlimited.png'
import img3 from '../../../assets/images/premium.png'
@@ -32,7 +33,7 @@ const Main = ({gredient , video}) => {
<div className="col-md-4">
<div className="pricing_block">
<div className="icon">
<img src="assets/images/standard-one.png" alt="image" />
<Image width='auto' height='auto' src="assets/images/standard-one.png" alt="image" />
</div>
<div className="pkg_name">
<h3>Standard</h3>
@@ -56,13 +57,13 @@ const Main = ({gredient , video}) => {
<p>Support on request</p>
</li>
</ul>
<Link to="/faq" className="btn white_btn">BUY NOW</Link>
<Link href="/faq" className="btn white_btn">BUY NOW</Link>
</div>
</div>
<div className="col-md-4">
<div className="pricing_block highlited_block">
<div className="icon">
<img src="assets/images/unlimited-one.png" alt="image"/>
<Image width='auto' height='auto' src="assets/images/unlimited-one.png" alt="image"/>
</div>
<div className="pkg_name">
<h3>Unlimited</h3>
@@ -86,13 +87,13 @@ const Main = ({gredient , video}) => {
<p>24/7 Customer support</p>
</li>
</ul>
<Link to="/faq" className="btn white_btn">BUY NOW</Link>
<Link href="/faq" className="btn white_btn">BUY NOW</Link>
</div>
</div>
<div className="col-md-4">
<div className="pricing_block">
<div className="icon">
<img src="assets/images/premium-one.png" alt="image" />
<Image width='auto' height='auto' src="assets/images/premium-one.png" alt="image" />
</div>
<div className="pkg_name">
<h3>Premium</h3>
@@ -116,7 +117,7 @@ const Main = ({gredient , video}) => {
<p>24/7 Customer support</p>
</li>
</ul>
<Link to="/faq" className="btn white_btn">BUY NOW</Link>
<Link href="/faq" className="btn white_btn">BUY NOW</Link>
</div>
</div>
</div>
@@ -127,7 +128,7 @@ const Main = ({gredient , video}) => {
<div className="col-md-4">
<div className="pricing_block">
<div className="icon">
<img src="assets/images/standard.png" alt="image" />
<Image width='auto' height='auto' src="assets/images/standard.png" alt="image" />
</div>
<div className="pkg_name">
<h3>Standard</h3>
@@ -151,14 +152,14 @@ const Main = ({gredient , video}) => {
<p>Support on request</p>
</li>
</ul>
<Link to="/faq" className="btn white_btn">BUY NOW</Link>
<Link href="/faq" className="btn white_btn">BUY NOW</Link>
</div>
</div>
<div className="col-md-4">
<div className="pricing_block highlited_block">
<div className="icon">
<img src="assets/images/unlimited.png" alt="image" />
<Image width='auto' height='auto' src="assets/images/unlimited.png" alt="image" />
</div>
<div className="pkg_name">
<h3>Unlimited</h3>
@@ -182,14 +183,14 @@ const Main = ({gredient , video}) => {
<p>24/7 Customer support</p>
</li>
</ul>
<Link to="/faq" className="btn white_btn">BUY NOW</Link>
<Link href="/faq" className="btn white_btn">BUY NOW</Link>
</div>
</div>
<div className="col-md-4">
<div className="pricing_block">
<div className="icon">
<img src="assets/images/premium.png" alt="image" />
<Image width='auto' height='auto' src="assets/images/premium.png" alt="image" />
</div>
<div className="pkg_name">
<h3>Premium</h3>
@@ -213,13 +214,13 @@ const Main = ({gredient , video}) => {
<p>24/7 Customer support</p>
</li>
</ul>
<Link to="/faq" className="btn white_btn">BUY NOW</Link>
<Link href="/faq" className="btn white_btn">BUY NOW</Link>
</div>
</div>
</div>
</div>
<p className="contact_text" data-aos="fade-up" data-aos-duration="1500">Not sure what to choose ? <Link to="/contact">contact us</Link> for custom packages</p>
<p className="contact_text" data-aos="fade-up" data-aos-duration="1500">Not sure what to choose ? <Link href="/contact">contact us</Link> for custom packages</p>
</div>
</section>
:
@@ -244,7 +245,7 @@ const Main = ({gredient , video}) => {
<div className="col-md-4">
<div className="pricing_block">
<div className="icon">
{ video ? <img src="assets/images/standard-one.png" alt="image" /> : <img src={img1} alt="image" /> }
{ video ? <Image width='auto' height='auto' src="assets/images/standard-one.png" alt="image" /> : <Image width='auto' height='auto' src={img1} alt="image" /> }
</div>
<div className="pkg_name">
<h3>Standard</h3>
@@ -268,13 +269,13 @@ const Main = ({gredient , video}) => {
<p>Support on request</p>
</li>
</ul>
<Link to="/faq" className="btn white_btn">BUY NOW</Link>
<Link href="/faq" className="btn white_btn">BUY NOW</Link>
</div>
</div>
<div className="col-md-4">
<div className="pricing_block highlited_block">
<div className="icon">
{ video ? <img src="assets/images/unlimited-one.png" alt="image"/> : <img src={img2} alt="image"/> }
{ video ? <Image width='auto' height='auto' src="assets/images/unlimited-one.png" alt="image"/> : <Image width='auto' height='auto' src={img2} alt="image"/> }
</div>
<div className="pkg_name">
<h3>Unlimited</h3>
@@ -298,13 +299,13 @@ const Main = ({gredient , video}) => {
<p>24/7 Customer support</p>
</li>
</ul>
<Link to="/faq" className="btn white_btn">BUY NOW</Link>
<Link href="/faq" className="btn white_btn">BUY NOW</Link>
</div>
</div>
<div className="col-md-4">
<div className="pricing_block">
<div className="icon">
{video ? <img src="assets/images/premium-one.png" alt="image" /> : <img src={img3} alt="image" /> }
{video ? <Image width='auto' height='auto' src="assets/images/premium-one.png" alt="image" /> : <Image width='auto' height='auto' src={img3} alt="image" /> }
</div>
<div className="pkg_name">
<h3>Premium</h3>
@@ -328,7 +329,7 @@ const Main = ({gredient , video}) => {
<p>24/7 Customer support</p>
</li>
</ul>
<Link to="/faq" className="btn white_btn">BUY NOW</Link>
<Link href="/faq" className="btn white_btn">BUY NOW</Link>
</div>
</div>
</div>
@@ -339,7 +340,7 @@ const Main = ({gredient , video}) => {
<div className="col-md-4">
<div className="pricing_block">
<div className="icon">
{ video ? <img src="assets/images/standard-one.png" alt="image" /> : <img src={img1} alt="image" /> }
{ video ? <Image width='auto' height='auto' src="assets/images/standard-one.png" alt="image" /> : <Image width='auto' height='auto' src={img1} alt="image" /> }
</div>
<div className="pkg_name">
<h3>Standard</h3>
@@ -363,14 +364,14 @@ const Main = ({gredient , video}) => {
<p>Support on request</p>
</li>
</ul>
<Link to="/faq" className="btn white_btn">BUY NOW</Link>
<Link href="/faq" className="btn white_btn">BUY NOW</Link>
</div>
</div>
<div className="col-md-4">
<div className="pricing_block highlited_block">
<div className="icon">
{ video ? <img src="assets/images/unlimited-one.png" alt="image"/> : <img src={img2}alt="image"/> }
{ video ? <Image width='auto' height='auto' src="assets/images/unlimited-one.png" alt="image"/> : <Image width='auto' height='auto' src={img2}alt="image"/> }
</div>
<div className="pkg_name">
<h3>Unlimited</h3>
@@ -394,14 +395,14 @@ const Main = ({gredient , video}) => {
<p>24/7 Customer support</p>
</li>
</ul>
<Link to="/faq" className="btn white_btn">BUY NOW</Link>
<Link href="/faq" className="btn white_btn">BUY NOW</Link>
</div>
</div>
<div className="col-md-4">
<div className="pricing_block">
<div className="icon">
{video ? <img src="assets/images/premium-one.png" alt="image" /> : <img src={img3} alt="image" /> }
{video ? <Image width='auto' height='auto' src="assets/images/premium-one.png" alt="image" /> : <Image width='auto' height='auto' src={img3} alt="image" /> }
</div>
<div className="pkg_name">
<h3>Premium</h3>
@@ -425,13 +426,13 @@ const Main = ({gredient , video}) => {
<p>24/7 Customer support</p>
</li>
</ul>
<Link to="/faq" className="btn white_btn">BUY NOW</Link>
<Link href="/faq" className="btn white_btn">BUY NOW</Link>
</div>
</div>
</div>
</div>
<p className="contact_text" data-aos="fade-up" data-aos-duration="1500">Not sure what to choose ? <Link to="/contact">contact us</Link> for custom packages</p>
<p className="contact_text" data-aos="fade-up" data-aos-duration="1500">Not sure what to choose ? <Link href="/contact">contact us</Link> for custom packages</p>
</div>
</section>
}
+7 -6
View File
@@ -1,4 +1,5 @@
import { Link } from 'react-router-dom'
import Link from 'next/link'
import Image from 'next/image'
import React from 'react'
import story1 from '../../../../assets/images/story01.png'
import story2 from '../../../../assets/images/story02.png'
@@ -17,7 +18,7 @@ const Main = () => {
<div className="col-md-4">
<div className="story_box" data-aos="fade-up" data-aos-duration="1500">
<div className="story_img">
<img src={story1} alt="image" />
<Image width='auto' height='auto' src={story1} alt="image" />
<span>45 min ago</span>
</div>
<div className="story_text">
@@ -31,26 +32,26 @@ const Main = () => {
<div className="col-md-4">
<div className="story_box" data-aos="fade-up" data-aos-duration="1500">
<div className="story_img">
<img src={story2} alt="image" />
<Image width='auto' height='auto' src={story2} alt="image" />
<span>45 min ago</span>
</div>
<div className="story_text">
<h3>Top rated app! Yupp.</h3>
<p>Simply dummy text of the printing and typesetting industry lorem Ipsum has Lorem Ipsum is.</p>
<Link to="/blog-single">READ MORE</Link>
<Link href="/blog-single">READ MORE</Link>
</div>
</div>
</div>
<div className="col-md-4">
<div className="story_box" data-aos="fade-up" data-aos-duration="1500">
<div className="story_img">
<img src={story3} alt="image" />
<Image width='auto' height='auto' src={story3} alt="image" />
<span>45 min ago</span>
</div>
<div className="story_text">
<h3>Creative ideas on app.</h3>
<p>Printing and typesetting industry lorem Ipsum has Lorem simply dummy text of the.</p>
<Link to="/blog-single">READ MORE</Link>
<Link href="/blog-single">READ MORE</Link>
</div>
</div>
</div>
+7 -6
View File
@@ -1,5 +1,6 @@
import OwlCarousel from 'react-owl-carousel'
import { Link } from 'react-router-dom'
import Image from 'next/image'
import Link from 'next/link'
import React from 'react'
import user1 from '../../../../assets/images/testimonial_user1.png'
import user2 from '../../../../assets/images/testimonial_user2.png'
@@ -52,7 +53,7 @@ const Main = () => {
beenthe standar dummy.
</p>
<div className="testimonial_img">
<img src={user1} alt="image" />
<Image width='auto' height='auto' src={user1} alt="image" />
</div>
<h3>Shayna John</h3>
<span className="designation">Careative inc</span>
@@ -72,7 +73,7 @@ const Main = () => {
beenthe standar dummy.
</p>
<div className="testimonial_img">
<img src={user2} alt="image" />
<Image width='auto' height='auto' src={user2} alt="image" />
</div>
<h3>Willium Den</h3>
<span className="designation">Careative inc</span>
@@ -92,7 +93,7 @@ const Main = () => {
beenthe standar dummy.
</p>
<div className="testimonial_img">
<img src={user3} alt="image" />
<Image width='auto' height='auto' src={user3} alt="image" />
</div>
<h3>Cyrus Stephen</h3>
<span className="designation">Careative inc</span>
@@ -110,11 +111,11 @@ const Main = () => {
<p>5.0 / 5.0</p>
</div>
<h3>2578</h3>
<Link to="/review">TOTAL USER REVIEWS <i className="icofont-arrow-right"></i></Link>
<Link href="/review">TOTAL USER REVIEWS <i className="icofont-arrow-right"></i></Link>
</div>
<div className="avtar_faces">
<img src={user4} alt="image" />
<Image width='auto' height='auto' src={user4} alt="image" />
</div>
</div>
</div>
+9 -8
View File
@@ -5,6 +5,7 @@ import img2 from '../../../assets/images/spoty.png'
import img3 from '../../../assets/images/shopboat.png'
import img4 from '../../../assets/images/slack.png'
import img5 from '../../../assets/images/envato.png'
import Image from 'next/image'
const Main = () => {
const company_slider = {
@@ -40,42 +41,42 @@ const Main = () => {
<OwlCarousel id="company_slider" {...company_slider} className="owl-carousel owl-theme owl-loaded owl-drag">
<div className="item">
<div className="logo">
<img src={img1} alt="image" />
<Image width='auto' height='auto' src={img1} alt="image" />
</div>
</div>
<div className="item">
<div className="logo">
<img src={img2} alt="image" />
<Image width='auto' height='auto' src={img2} alt="image" />
</div>
</div>
<div className="item">
<div className="logo">
<img src={img3} alt="image" />
<Image width='auto' height='auto' src={img3} alt="image" />
</div>
</div>
<div className="item">
<div className="logo">
<img src={img4} alt="image" />
<Image width='auto' height='auto' src={img4} alt="image" />
</div>
</div>
<div className="item">
<div className="logo">
<img src={img5} alt="image" />
<Image width='auto' height='auto' src={img5} alt="image" />
</div>
</div>
<div className="item">
<div className="logo">
<img src={img1} alt="image" />
<Image width='auto' height='auto' src={img1} alt="image" />
</div>
</div>
<div className="item">
<div className="logo">
<img src={img2} alt="image" />
<Image width='auto' height='auto' src={img2} alt="image" />
</div>
</div>
<div className="item">
<div className="logo">
<img src={img3} alt="image" />
<Image width='auto' height='auto' src={img3} alt="image" />
</div>
</div>
</OwlCarousel>
+39 -38
View File
@@ -1,5 +1,6 @@
import React , {useState} from 'react'
import { Link } from 'react-router-dom'
import Link from 'next/link'
import Image from 'next/image'
import img from '../../../../assets/images/download_app.jpg'
import img1 from '../../../../assets/images/create_account.jpg'
import img2 from '../../../../assets/images/enjoy_app.jpg'
@@ -29,9 +30,9 @@ const Main = ({dark}) => {
<div className="step_text" data-aos="fade-right" data-aos-duration="1500">
<h4>Download app</h4>
<div className="app_icon">
<Link to="#"><i className="icofont-brand-android-robot"></i></Link>
<Link to="#"><i className="icofont-brand-apple"></i></Link>
<Link to="#"><i className="icofont-brand-windows"></i></Link>
<Link href="#"><i className="icofont-brand-android-robot"></i></Link>
<Link href="#"><i className="icofont-brand-apple"></i></Link>
<Link href="#"><i className="icofont-brand-windows"></i></Link>
</div>
<p>Download App either for Windows, Mac or Android</p>
</div>
@@ -39,7 +40,7 @@ const Main = ({dark}) => {
<h3>01</h3>
</div>
<div className="step_img" data-aos="fade-left" data-aos-duration="1500">
<img src={img} alt="image" />
<Image width='auto' height='auto' src={img} alt="image" />
</div>
</li>
<li>
@@ -52,20 +53,20 @@ const Main = ({dark}) => {
<h3>02</h3>
</div>
<div className="step_img" data-aos="fade-right" data-aos-duration="1500">
<img src={img1} alt="image" />
<Image width='auto' height='auto' src={img1} alt="image" />
</div>
</li>
<li>
<div className="step_text" data-aos="fade-right" data-aos-duration="1500">
<h4>Its done, enjoy the app</h4>
<span>Have any questions check our <Link to="#">FAQs</Link></span>
<span>Have any questions check our <Link href="#">FAQs</Link></span>
<p>Get most amazing app experience,Explore and share the app</p>
</div>
<div className="step_number">
<h3>03</h3>
</div>
<div className="step_img" data-aos="fade-left" data-aos-duration="1500">
<img src={img2} alt="image" />
<Image width='auto' height='auto' src={img2} alt="image" />
</div>
</li>
</ul>
@@ -76,25 +77,25 @@ const Main = ({dark}) => {
<div className="yt_video" style={{display: "none"}} data-aos="fade-in" data-aos-duration="1500">
<div className="anim_line dark_bg">
<span><img src="assets/images/anim_line.png" alt="anim_line" /></span>
<span><img src="assets/images/anim_line.png" alt="anim_line" /></span>
<span><img src="assets/images/anim_line.png" alt="anim_line" /></span>
<span><img src="assets/images/anim_line.png" alt="anim_line" /></span>
<span><img src="assets/images/anim_line.png" alt="anim_line" /></span>
<span><img src="assets/images/anim_line.png" alt="anim_line" /></span>
<span><img src="assets/images/anim_line.png" alt="anim_line" /></span>
<span><img src="assets/images/anim_line.png" alt="anim_line" /></span>
<span><img src="assets/images/anim_line.png" alt="anim_line" /></span>
<span><Image width='auto' height='auto' src="assets/images/anim_line.png" alt="anim_line" /></span>
<span><Image width='auto' height='auto' src="assets/images/anim_line.png" alt="anim_line" /></span>
<span><Image width='auto' height='auto' src="assets/images/anim_line.png" alt="anim_line" /></span>
<span><Image width='auto' height='auto' src="assets/images/anim_line.png" alt="anim_line" /></span>
<span><Image width='auto' height='auto' src="assets/images/anim_line.png" alt="anim_line" /></span>
<span><Image width='auto' height='auto' src="assets/images/anim_line.png" alt="anim_line" /></span>
<span><Image width='auto' height='auto' src="assets/images/anim_line.png" alt="anim_line" /></span>
<span><Image width='auto' height='auto' src="assets/images/anim_line.png" alt="anim_line" /></span>
<span><Image width='auto' height='auto' src="assets/images/anim_line.png" alt="anim_line" /></span>
</div>
<div className="thumbnil">
<span className="banner_shape1"> <img src="assets/images/banner-shape1.png" alt="image"/> </span>
<span className="banner_shape2"> <img src="assets/images/banner-shape2.png" alt="image"/> </span>
<span className="banner_shape3"> <img src="assets/images/banner-shape3.png" alt="image"/> </span>
<img src="assets/images/yt_thumb.png" alt="image" />
<Link to="#" className="popup-youtube play-button" data-url="#" onClick={() => setytShow(true)} data-toggle="modal" data-target="#myModal" title="XJj2PbenIsU">
<span className="banner_shape1"> <Image width='auto' height='auto' src="assets/images/banner-shape1.png" alt="image"/> </span>
<span className="banner_shape2"> <Image width='auto' height='auto' src="assets/images/banner-shape2.png" alt="image"/> </span>
<span className="banner_shape3"> <Image width='auto' height='auto' src="assets/images/banner-shape3.png" alt="image"/> </span>
<Image width='auto' height='auto' src="assets/images/yt_thumb.png" alt="image" />
<Link href="#" className="popup-youtube play-button" data-url="#" onClick={() => setytShow(true)} data-toggle="modal" data-target="#myModal" title="XJj2PbenIsU">
<span className="play_btn">
<img src={video} alt="image" />
<Image width='auto' height='auto' src={video} alt="image" />
<div className="waves-block">
<div className="waves wave-1"></div>
<div className="waves wave-2"></div>
@@ -108,25 +109,25 @@ const Main = ({dark}) => {
</div> :
<div className="yt_video" data-aos="fade-in" data-aos-duration="1500">
<div className="anim_line dark_bg">
<span><img src={line} alt="anim_line" /></span>
<span><img src={line} alt="anim_line" /></span>
<span><img src={line} alt="anim_line" /></span>
<span><img src={line} alt="anim_line" /></span>
<span><img src={line} alt="anim_line" /></span>
<span><img src={line} alt="anim_line" /></span>
<span><img src={line} alt="anim_line" /></span>
<span><img src={line} alt="anim_line" /></span>
<span><img src={line} alt="anim_line" /></span>
<span><Image width='auto' height='auto' src={line} alt="anim_line" /></span>
<span><Image width='auto' height='auto' src={line} alt="anim_line" /></span>
<span><Image width='auto' height='auto' src={line} alt="anim_line" /></span>
<span><Image width='auto' height='auto' src={line} alt="anim_line" /></span>
<span><Image width='auto' height='auto' src={line} alt="anim_line" /></span>
<span><Image width='auto' height='auto' src={line} alt="anim_line" /></span>
<span><Image width='auto' height='auto' src={line} alt="anim_line" /></span>
<span><Image width='auto' height='auto' src={line} alt="anim_line" /></span>
<span><Image width='auto' height='auto' src={line} alt="anim_line" /></span>
</div>
<div className="thumbnil">
<span className="banner_shape1"> <img src={banner} alt="image"/> </span>
<span className="banner_shape2"> <img src={banner1} alt="image"/> </span>
<span className="banner_shape3"> <img src={banner2} alt="image"/> </span>
<img src={ytvideo} alt="image" />
<Link to="#" className="popup-youtube play-button" data-url="#" onClick={() => setytShow(true)} data-toggle="modal" data-target="#myModal" title="XJj2PbenIsU">
<span className="banner_shape1"> <Image width='auto' height='auto' src={banner} alt="image"/> </span>
<span className="banner_shape2"> <Image width='auto' height='auto' src={banner1} alt="image"/> </span>
<span className="banner_shape3"> <Image width='auto' height='auto' src={banner2} alt="image"/> </span>
<Image width='auto' height='auto' src={ytvideo} alt="image" />
<Link href="#" className="popup-youtube play-button" data-url="#" onClick={() => setytShow(true)} data-toggle="modal" data-target="#myModal" title="XJj2PbenIsU">
<span className="play_btn">
<img src={video} alt="image" />
<Image width='auto' height='auto' src={video} alt="image" />
<div className="waves-block">
<div className="waves wave-1"></div>
<div className="waves wave-2"></div>
+18
View File
@@ -0,0 +1,18 @@
import React from 'react'
import Error from './components/Error'
// must be a better way to centralize the style = TEMPORARY USE
import './assets/css/bootstrap.min.css';
import './assets/css/custom-animated.css';
import './assets/css/default.css';
import './assets/css/font-awesome.min.css';
import './assets/css/magnific-popup.css';
import './assets/css/main.css';
import './assets/css/style.css';
export default function notFound() {
return (
<Error />
)
}
+98
View File
@@ -0,0 +1,98 @@
import React from 'react';
import ServiceSideMenu from '../components/ServiceSideMenu';
function DetailsPrivacy() {
return (
<>
<section className="appie-service-details-area pt-100 pb-100">
<div className="container">
<div className="row">
<div className="col-lg-4">
<ServiceSideMenu />
</div>
<div className="col-lg-8">
<div className="service-details-content">
<div className="content">
<h4 className="title">Privacy Policy</h4>
<p>
Wrenchboard issues this policy to inform users about the information we collect, the use and disclosures in the course of interactions with the WrenchBoard services by customers. We value the privacy of our customers and such strive to employ best industry standards and practices to protect their privacy. By signing up for this services, using our products or technologies offered through the WrenchBoard website, you expressly agree to the terms of this Privacy Policy.
</p>
<span>
-
</span>
<hr size="1" />
<h4 className="title">Collection of Information </h4>
<p>
When you sign up for WrenchBoard platform as a user, freelancer, worker or client, you inadvertently provide certain personal information such as name and email address. This information may be used to identify or contact you as part of the service we provide. Below is information we may collect from registered users of the service.
<ul class="list-group">
<li class="list-group-item">We collect financial information which include bank account numbers, debit/credit account.</li>
<li class="list-group-item">We also collect other personal information such as date of birth to ensure compliance to lab our regulations as the platform is strictly for persons 18 years and above.</li>
<li class="list-group-item">We collect personal information (names email addresses) from you and your friends when you use our referral program. We may also receive information about you from third party sites during promotions and campaigns.</li>
</ul>
</p>
<hr size="1" />
<h4 className="title">Use of Personal Information </h4>
<p>
The information we collect about you is mainly utilized to provide a secure, efficient and smooth user experience as you interact with the site. We may also utilize the information to contact you to resolve issues with your account or resolve disputes between freelancers and clients. We also use your personal information in the following ways.
<ul class="list-group">
<li class="list-group-item">To comply with the regulatory requirement, whenever the need arises. </li>
<li class="list-group-item">To improve business relationship between Wrenchboard and users. </li>
<li class="list-group-item">To manage and protect our IT infrastructure. </li>
<li class="list-group-item">To contact you as the need arises as part of the services we offer to users. </li>
<li class="list-group-item">To provide some indication on the promotional offers and advertisement we direct to you. </li>
<li class="list-group-item">To protect you and your information. We regularly send you notification based on activities as you use the service. </li>
</ul>
</p>
<hr size="1" />
<h4>How We Share Your Personal Information: </h4>
<p>
When you sign up to the Service as a freelancer and create a profile, we will share your limited personal information with clients or project owners for whom you may perform a task or do work for based on expression of interest. Such information will include name, profile information with experience and your ranking based on previous performance. This information will be available to the public.</p>
<p>When you register as a client or project owner and post a job in the market place or offer jobs to preselected freelancers or workers on this service, information about you, your business will be shared. This information will be based on the information provided in your profile.</p>
<p>In order to deliver a quality service on WrenchBoard, we require the services of third parties and agents such as PayPal, Quickteller Service or banks to facilitate and process transactions.</p>
<p>We may also share your personal information when and if compelled or mandated by government agencies, or court injunctions or regulatory requirement. In order to settle disputes or claims, we may also be compelled to share your information in order to deliver services to you.</p>
<p>Finally, we may share your information with companies that we plan to to merge with or to be acquired by. We will take necessary measure to ensure that all such new affiliations and corporate entities comply with the Privacy Policies hereby stated failing which you will be notified duly.</p>
<hr size="1" />
<h4 className="title"> How We Use Cookies and Related Technologies.</h4>
<p>
When you access the service or website, www.wrenchboard.com , we store small files called Cookies in your browser. Cookies and related technologies like beacons and tags are used to identify customers uniquely. With Cookies, we can track and trend the pages of interest within the website. Hence, these technologies help us focus only relevant promotions or advertisement to each customer. Through this technologies, we are able to improve the service based on the feedback from the interaction with users. We also rely on these technologies to mitigate fraudulent attempts on your WrenchBoard account. You may elect to disable cookies to prevent installation of cookies from the website to your browser. However, your functional experience with the service or website may be impacted. Note that you automatically disconnect from cookies when you close your browser session or log out of the service.
</p>
<hr size="1" />
<h4 className="title"> Measures We Take to Secure Your Information</h4>
<p>
Your data and privacy are important to us as such we take extreme care on how we protect your information. We use a combination of industry standard encryption technologies to protect your information. Your password is not visible to our technical support team or any one in WrenchBoard. Our IT infrastructures are located in hosting facilities with strict access controls, and security protocols with only pre checked and authorized persons have access.
</p>
<hr size="1" />
<h4 className="title">Updating Your Information or Opting Out.</h4>
<p>
Users of this service may update the information posted in profiles or their accounts at any time. The accuracy of information posted on the profiles and accounts is entirely the responsibility of users. You may also decide to opt out the service or close your account at any time. We may also deactivate your account if you violate the terms of use of the website. Whilst we will endeavor to delete your core information in such instances, we will retain minimal records for reasons including disputes, claims or administrative purposes. Also, note that it may not be possible to delete any information you had shared with other users on the website previously.
</p>
<hr size="1" />
<h4 className="title">Deactivate/Delete your account.</h4>
<p>
If you no longer wish to use our Services, you can deactivate your Services account. If you want to deactivate your account, that setting is available to you in your account settings. Otherwise, please get in touch with our support. While we close any associated process, you will not be able to access your account. Note that this process cannot be reversed since we will remove your data. If you want to use our services in the future, it will be a new account altogether. </p>
<hr size="1" />
<h4 className="title">Changes To the Policy</h4>
<p>
We reserve the rights to update and make changes to this Privacy policy at anytime. Changes will become effective once posted. However, we will notify you by email or when you log on to the service or website about any changes that fundamentally affect how we manage your personal information.
Contacting Us: You may contact us about this policy through our email address anytime : support@wrenchboard.com
</p>
</div>
</div>
</div>
</div>
</div>
</section>
</>
);
}
export default DetailsPrivacy;
+28
View File
@@ -0,0 +1,28 @@
import React from 'react';
import thumb from '../assets/images/fun-fact-thumb.png';
import Image from 'next/image';
function HeroPrivacy({title}) {
return (
<>
<div className="appie-page-title-area appie-page-service-title-area">
<div className="container">
<div className="row">
<div className="col-lg-12">
<div className="appie-page-title-item">
<h1 className="appie-title">
{title}
</h1>
<div className="thumb">
<Image src={thumb} alt="" />
</div>
</div>
</div>
</div>
</div>
</div>
</>
);
}
export default HeroPrivacy;
+31
View File
@@ -0,0 +1,31 @@
import React from 'react'
import ServiceNav from '../components/navigation/ServiceNav';
import HeroPrivacy from './HeroPrivacy'
import DetailsPrivacy from './DetailsPrivacy'
import FooterHomeOne from '../components/FooterHomeOne';
import BackToTop from '../components/BackToTop';
// must be a better way to centralize the style = TEMPORARY USE
import '../assets/css/bootstrap.min.css';
import '../assets/css/custom-animated.css';
import '../assets/css/default.css';
import '../assets/css/font-awesome.min.css';
import '../assets/css/magnific-popup.css';
import '../assets/css/main.css';
import '../assets/css/style.css';
function page() {
return (
<>
<ServiceNav />
<HeroPrivacy title="Privacy Policy" />
<DetailsPrivacy />
<FooterHomeOne className='' />
<BackToTop className='' />
</>
)
}
export default page
+24
View File
@@ -0,0 +1,24 @@
import React from 'react'
import FooterHomeOne from '../components/FooterHomeOne';
// must be a better way to centralize the style = TEMPORARY USE
import '../assets/css/bootstrap.min.css';
import '../assets/css/custom-animated.css';
import '../assets/css/default.css';
import '../assets/css/font-awesome.min.css';
import '../assets/css/magnific-popup.css';
import '../assets/css/main.css';
import '../assets/css/style.css';
function page() {
return (
<>
<div>Resources Here</div>
<FooterHomeOne className={undefined} />
</>
)
}
export default page
+112
View File
@@ -0,0 +1,112 @@
"use client"
import React, { useState } from 'react';
import PopupVideo from '../components/PopupVideo'
function MissionStatement() {
const [showQuestion, setQuestion] = useState(1);
const [showVideo, setVideoValue] = useState(false);
const openQuestion = (e, value) => {
e.preventDefault();
setQuestion(value);
};
const ourMissions = [
{
id: 1,
title: "Rewards Family and Personal Goals",
content: "We will be the best platform for you to set a rewardable goal for you, your family, and others",
},
{
id: 2,
title: "Expand Earning Opportunities",
content: "We will always present opportunities equally",
},
{
id: 3,
title: "Exhibit your Capabilities",
content: "We will let your ability shine to opportunities",
},
{
id: 4,
title: "Get your work done",
content: "For other tasks you need to get done, we will be there for smooth engagement",
}
];
const handleShowVideo = (e) => {
e.preventDefault();
setVideoValue(!showVideo);
};
return (
<>
{showVideo && (
<PopupVideo
videoSrc="//www.youtube.com/embed/EE7NqzhMDms?autoplay=1"
handler={(e) => handleShowVideo(e)}
/>
)}
<div className="appie-faq-8-area pt-100 pb-100" id="counter">
<div className="container">
<div className="row">
<div className="col-lg-5">
<div className="appie-section-title">
<h3 className="appie-title">Our Mission.</h3>
<p>
Our mission at WrenchBoard is to empower individuals, families and communities through :
</p>
</div>
<div
className="faq-accordion wow fadeInRight mt-30"
data-wow-duration="1500ms"
>
<div
className="accrodion-grp wow fadeIn faq-accrodion"
data-wow-duration="1500ms"
data-grp-name="faq-accrodion"
>
{
ourMissions.map((item, index) => (
<div
key={index}
className={`accrodion ${
showQuestion === item.id ? 'active' : ''
}`}
onClick={(e) => openQuestion(e, item.id)}
>
<div className="accrodion-inner">
<div className="accrodion-title">
<h4>{item.title}</h4>
</div>
<div
className="accrodion-content"
style={{
display: showQuestion === item.id ? 'block' : 'none',
}}
>
<div className="inner">
<p>
{item.content}
</p>
</div>
</div>
</div>
</div>
))
}
</div>
</div>
</div>
</div>
</div>
<div className="mission-side-box"></div>
</div>
</>
);
}
export default MissionStatement;
+51
View File
@@ -0,0 +1,51 @@
import React from 'react';
// import ServiceSideMenu from './ServiceSideMenu';
import ServiceSideMenu from '../components/ServiceSideMenu';
function ServiceTopart() {
return (
<>
<section className="appie-service-details-area pt-100 pb-100">
<div className="container">
<div className="row">
<div className="col-lg-4">
<ServiceSideMenu />
</div>
<div className="col-lg-8">
<div className="service-details-content">
<div className="content">
<h3 className="title">What we do.</h3>
<p>
WrenchBoard is where you set goals and reward accomplishments or find somebody to perform a needed task.
</p>
{/*<hr />*/}
{/*<p>*/}
{/* /!*An open-platform for you to build your self - image, skills set, branded personality,*!/*/}
{/* /!*carve a network and ofcourse an income flow with ease and satisfaction of self - actualization and accomplishments.*!/*/}
{/*</p>*/}
{/*<p>*/}
{/* A major task done by skilled professional with personal touch and completed within the twinkling of an eye in specified time-frame.*/}
{/*</p>*/}
<hr />
<p>
WrenchBoard is the marketplace that allows users to raise their hands and gives you the power to select who you want to perform your task.
</p>
<hr />
<p>
Our commitment to quality ensures that WrenchBoard.com remains a trusted platform for reliable transaction and redspectable partnerships.
</p>
<hr />
Do more at < a href ={process.env.REACT_APP_DASH_URL_LOGIN} >WrenchBoard</a>
</div>
</div>
</div>
</div>
</div>
</section>
</>
);
}
export default ServiceTopart;
+39
View File
@@ -0,0 +1,39 @@
import React from 'react'
import FooterHomeOne from '../components/FooterHomeOne';
import ServiceNav from '../components/navigation/ServiceNav'
import HeroNews from '../components/News/HeroNews'
import ServiceTopart from './ServiceTopart'
import MissionStatement from './MissionStatement'
import BackToTop from '../components/BackToTop'
// must be a better way to centralize the style = TEMPORARY USE
import '../assets/css/bootstrap.min.css';
import '../assets/css/custom-animated.css';
import '../assets/css/default.css';
import '../assets/css/font-awesome.min.css';
import '../assets/css/magnific-popup.css';
import '../assets/css/main.css';
import '../assets/css/style.css';
function page() {
return (
<>
<ServiceNav />
<HeroNews
title="Services"
breadcrumb={[
{ link: '/', title: 'Home' },
{ link: '/service', title: 'Service' },
]}
/>
<ServiceTopart />
<MissionStatement />
<FooterHomeOne className={undefined} />
<BackToTop className='' />
</>
)
}
export default page
+281
View File
@@ -0,0 +1,281 @@
import React from 'react';
import ServiceSideMenu from './ServiceSideMenu';
function DetailsService() {
return (
<>
<section className="appie-service-details-area pt-100 pb-100">
<div className="container">
<div className="row">
<div className="col-lg-4">
<ServiceSideMenu />
</div>
<div className="col-lg-8">
<div className="service-details-content">
<div className="content">
<div className="mb-4">
<h4 className="title mb-4">
Terms of use
</h4>
<p className="">
(updated August 10, 2023)
</p>
<p className="">
These Website Terms & Conditions (T&Cs) apply to your access and
use of www.wrenchboard.com,users.wrenchboard.com (the Site),
native apps, including all software, data, reports, text, images,
sounds, video, and all contents made available through any portion
of the Site (collectively, the Content). The range includes all
such elements as whole, individual, and parts.
</p>
</div>
<hr />
<div className="my-4">
<h4 className="title mb-4">
Acceptance of Terms
</h4>
<p className="">
WRENCHBOARD permits you (User or you or your) to access and
use the Site and Content, subject to these T&Cs. By accessing or
using any portion of the Site, you acknowledge that you have read,
understood, and agree to be bound by these T&Cs. If you do not agree
with these T&Cs, you must not accept these T&Cs or access or use the
site or content.
</p>
</div>
<hr />
<div className="my-4">
<h4 className="title mb-4">
General Conditions of Use
</h4>
<ul className="ml-4">
<li className="">
<h6 className="title my-4">
Authorization to Access and Use Site and Content.
</h6>
<p className="">
Subject to your compliance with these T&Cs and the provisions
hereof, you may access or use the Site and Content solely to
evaluate WRENCHBOARD and WRENCHBOARDs products and services.
You may only link to the Site or Content, or any portion
thereof, as expressly permitted by WRENCHBOARD.
</p>
</li>
<li className="">
<h6 className="title my-4">
Ownership and Restrictions
</h6>
<p className="">
All rights, title, and interest in and to the Site and Content
will remain exclusive to WRENCHBOARD. You will not:
</p>
<ol className="ml-4" style={{listStyleType: 'number'}}>
<li className="my-2">
Sublicense, resell, rent, lease, transfer, assign, timeshare,
or commercially exploit or make the Site and any Content
available to any third party.
</li>
<li className="my-2">
Use the Site and Content in any unlawful manner (including
without limitation in violation of any data, privacy, or
export control laws) or in any way that interferes with or
disrupts the integrity or performance of the Site and Content
or their related components.
</li>
<li className="my-2">
Modify, adapt, or hack the Site and Content to, or try to,
gain unauthorized access to the restricted portions of the
Site and Content or related systems or networks (i.e.,
circumvent any encryption or other security measures, gain
access to any source code or any other underlying form of
technology or information, and gain access to any part of the
Site and Content, or any other products or services of
WRENCHBOARD that are not readily made available to the general
public).
</li>
</ol>
<p className="my-4">
You are not permitted to copy, modify, frame, repost, publicly
perform or display, sell, reproduce, distribute, or create
derivative works of the Site and Content, except that you may
download and print one copy of the publicly available materials
(i.e., the Content that does not require an Account name or
password to access) on any single computer solely for your
personal, non-commercial use, provided that you do not modify
the material in any way. You keep intact all copyright,
trademark, and other proprietary notices.
</p>
<p className="my-4">
You agree not to access the Site or Content by any means other
than through the interface that WRENCHBOARD provides to access
the same. You may not use any page-scrape, deep-link,
spider, or robot or other automatic program, device,
algorithm or methodology, or any similar manual process, to
access, copy, acquire, or monitor any portion of the Site or any
Content, or in any way reproduce or circumvent the presentation
or navigational structure of the Site or any Content, to obtain
or attempt to obtain any Content or other information through
any means not made generally available through the Site by
WRENCHBOARD.
</p>
<p className="my-4">
WRENCHBOARD reserves the right to take lawful measures to
prevent such activity. You may not forge headers or otherwise
manipulate identifiers to disguise the origin of any message or
transmittal you send to WRENCHBOARD on or through the Site or
any service offered on or through the Site. You may not pretend
that you are, or that you represent, someone else or impersonate
any other individual or entity.
</p>
</li>
<li className="">
<h6 className="title my-4">
Responsibility for Your Data
</h6>
<p className="">
You are solely responsible for all data, information, and other
Content, that you upload, post, or otherwise provide or store
(hereafter post(ing)) in connection with or relating to the
Site. By posting your information and other Content (User
Content) on or through the Site and Content, you grant
WRENCHBOARD a worldwide, non-exclusive, perpetual, irrevocable,
royalty-free, sublicensable, and transferable license to use,
modify, reproduce, distribute, display, publish and perform User
Content in connection with the Site and Content. WRENCHBOARD has
the right, but not the obligation, to monitor the Site and
Content and User Content. <br />
WRENCHBOARD may remove or turn off any User Content at any time
for any reason or no reason. WRENCHBOARD will have no liability
to you for any unauthorized access or use of any of User Content
or any corruption, deletion, destruction, or loss of any of User
Content.
</p>
</li>
<li className="">
<h6 className="title my-4">
Feedback
</h6>
<p className="">
You may submit ideas, suggestions, or comments (Feedback)
regarding the Site and Content or WRENCHBOARDs business,
products, or services. By submitting any Feedback, you
acknowledge and agree that:{" "}
</p>
<ol className="ml-5" style={{listStyleType: 'number'}}>
<li className="my-2">
Your Feedback is provided by you voluntarily, and WRENCHBOARD
may, without any obligations or limitations, use and exploit
such Feedback in any manner and for any purpose.
</li>
<li className="my-2">
You will not seek and are not entitled to any money or other
form of compensation, consideration, or attribution concerning
your Feedback, regardless of whether WRENCHBOARD considered or
used your Feedback in any manner.
</li>
<li className="my-2">
Your Feedback is not confidential or proprietary information
of you or any third party.
</li>
</ol>
</li>
</ul>
</div>
<hr />
<div className="my-4">
<h4 className="title mb-4">
Termination of Access Due to Violations
</h4>
<p className="">
WRENCHBOARD may, in its sole discretion and without prior notice,
terminate your access to the Site and block your future access to
the Site if we determine that you have violated these T&Cs or other
agreements or guidelines which may be associated with your use of
the Site. Further, WRENCHBOARD may, in its sole discretion and
without prior notice, terminate your access to the Site for cause,
which includes (but is not limited to):
</p>
<ol className="ml-4" style={{listStyleType: 'number'}}>
<li className="my-2">
Requests by law enforcement or other government agencies
</li>
<li className="my-2">
Discontinuance or material modification of the Site or any service
offered on or through the Site
</li>
<li className="my-2">
Unexpected technical issues or problems.T&Cs Updates
</li>
</ol>
<p className="">
WRENCHBOARD reserves the right, at its sole discretion, to change or
modify portions of these T&Cs at any time. WRENCHBOARD will post the
changes to these T&Cs on the Site and indicate at the top of this
page the date these terms were last revised. It is your
responsibility to check the T&Cs periodically for changes. Your
continued use of the Site and Content after the date any such
changes become effective constitutes your acceptance of the new or
revised T&Cs.
</p>
</div>
<hr />
<div className="my-4">
<h4 className="title mb-4">
NO WARRANTIES AND DISCLAIMER BY WRENCHBOARD
</h4>
<p className="">
THE SITE AND CONTENT, AND ALL SERVER AND NETWORK COMPONENTS, ARE
PROVIDED ON AN AS IS AND AS AVAILABLE BASIS WITH ALL ERRORS AND
DEFECTS AND WITHOUT ANY WARRANTIES OF ANY KIND, AND WRENCHBOARD
EXPRESSLY DISCLAIMS ALL REPRESENTATIONS AND WARRANTIES, INCLUDING
ANY IMPLIED WARRANTIES OF ACCURACY, COMPLETENESS, MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, AND ANY
REPRESENTATIONS OR WARRANTIES ARISING FROM COURSE OF DEALING, COURSE
OF PERFORMANCE OR USAGE OF TRADE. YOU ACKNOWLEDGE THAT WRENCHBOARD
DOES NOT WARRANT THAT YOUR ACCESS OR USE OR BOTH OF THE SITE AND
CONTENT WILL BE UNINTERRUPTED, TIMELY, SECURE, ERROR-FREE, OR
VIRUS-FREE, AND WRENCHBOARD DOES NOT MAKE ANY WARRANTY AS TO THE
RESULTS THAT MAY BE OBTAINED FROM THE USE OF THE SITE AND CONTENT.
NO INFORMATION, ADVICE, OR SERVICES OBTAINED BY YOU FROM WRENCHBOARD
OR THROUGH THE SITE WILL CREATE ANY WARRANTY NOT EXPRESSLY STATED IN
THESE TERMS and CONDITIONS, AND YOU SHOULD NOT RELY ON THE SITE AND
THE GENERAL CONTENT ALONE AS THE BASIS FOR YOUR BUSINESS DECISIONS.
</p>
</div>
<hr />
<div className="my-4">
<p className="">
WRENCHBOARD reserves the right to do any of the following, at any
time, without notice: ( 1 ); to modify, suspend or terminate operation
of or access to the Site, or any portion of the Site, for any
reason; ( 2 ) to modify or change the Site, or any portion of the
Site, for any reason; and ( 3 ) to interrupt the operation of the
Site, or any portion of the Site, as necessary to perform routine or
non-routine maintenance, error correction, or other changes. Changes
to the Policy
</p>
<p className="my-4">
We reserve the right to update and change this Privacy policy at any
time. Changes will become effective once posted. However, we will
notify you by email or when you log on to the service or website
about any changes that fundamentally affect how we manage your
personal information. Contacting Us: You may contact us about this
policy through our email address anytime: support@wrenchboard.com
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
</>
);
}
export default DetailsService;
+28
View File
@@ -0,0 +1,28 @@
import React from 'react';
import thumb from '../assets/images/fun-fact-thumb.png';
import Image from 'next/image';
function HeroTerms({title}) {
return (
<>
<div className="appie-page-title-area appie-page-service-title-area">
<div className="container">
<div className="row">
<div className="col-lg-12">
<div className="appie-page-title-item">
<h1 className="appie-title">
{title}
</h1>
<div className="thumb">
<Image src={thumb} alt="" />
</div>
</div>
</div>
</div>
</div>
</div>
</>
);
}
export default HeroTerms;
+83
View File
@@ -0,0 +1,83 @@
import React from 'react';
import Link from 'next/link';
import Image from 'next/image';
import AboutIcon from '../assets/images/icon/about-us.ico'
import HomeIcon from '../assets/images/icon/home-icon.ico'
import UseCaseIcon from '../assets/images/icon/use-case.ico'
import PrivacyIcon from '../assets/images/icon/privacy-policy.ico'
import TermsIcon from '../assets/images/icon/term-and-conditions.ico'
function ServiceSideMenu() {
return (
<>
<div className="service-details-sidebar mr-50">
<div className="service-download-widget">
<Link href="/">
{/* <i className="fal fa-download"></i> */}
<Image src={HomeIcon} alt='sidenav-icon' />
<span>Home</span>
</Link>
</div>
<div className="service-download-widget">
<Link href="/about-us">
{/* <i className="fal fa-download"></i> */}
<Image src={AboutIcon} alt='sidenav-icon' />
<span>About us</span>
</Link>
</div>
<div className="service-download-widget">
<Link href="/use-cases">
{/* <i className="fal fa-file-pdf"></i> */}
<Image src={UseCaseIcon} alt='sidenav-icon' />
<span>Use Cases</span>
</Link>
</div>
<div className="service-download-widget">
<Link href="/privacy">
{/* <i className="fal fa-download"></i> */}
<Image src={PrivacyIcon} alt='sidenav-icon' />
<span>Privacy Policy</span>
</Link>
</div>
<div className="service-download-widget">
<Link href="/terms">
{/* <i className="fal fa-file-pdf"></i> */}
<Image src={TermsIcon} alt='sidenav-icon' />
<span>Terms of use</span>
</Link>
</div>
<div className="service-category-widget">
<ul>
<li>
Get WrenchBoard App
</li>
<li>
<a href={process.env.NEXT_PUBLIC_APPLE_APP}>
<i className="fab fa-apple" /> Download for iOS
</a>
</li>
<li>
<a className="item-2" href={process.env.NEXT_PUBLIC_ANDROID_APP}>
<i className="fab fa-google-play" /> Download for
Android
</a>
</li>
</ul>
</div>
</div>
</>
);
}
export default ServiceSideMenu;
+31
View File
@@ -0,0 +1,31 @@
import React from 'react'
import ServiceNav from '../components/navigation/ServiceNav';
import HeroTerms from './HeroTerms'
import DetailsService from './DetailsService'
import FooterHomeOne from '../components/FooterHomeOne';
import BackToTop from '../components/BackToTop';
// must be a better way to centralize the style = TEMPORARY USE
import '../assets/css/bootstrap.min.css';
import '../assets/css/custom-animated.css';
import '../assets/css/default.css';
import '../assets/css/font-awesome.min.css';
import '../assets/css/magnific-popup.css';
import '../assets/css/main.css';
import '../assets/css/style.css';
function page() {
return (
<>
<ServiceNav />
<HeroTerms title="Terms of use" />
<DetailsService />
<FooterHomeOne className='' />
<BackToTop className='' />
</>
)
}
export default page
+47
View File
@@ -0,0 +1,47 @@
import React from 'react';
import blogImg1 from '../assets/images/blog/1.jpg';
import UseCaseData from '../Services/UseCaseData';
import Image from 'next/image';
import Link from 'next/link';
function UseCase() {
var UseCaseDataResult = UseCaseData();
return (
<>
<div className="row">
{
UseCaseDataResult.map((i, index )=> {
var blgImg = i.meta_value != null ? "/images/" + i.meta_value : blogImg1;
return (
<div key={index} className="col-12 col-md-6 col-lg-4">
<div className="post-item-1">
{<Image width='auto' height='auto' src={blgImg} alt={i.title} />}
<div className="b-post-details">
<h3>
<Link href={process.env.NEXT_PUBLIC_DASH_URL_LOGIN}>
{i.title}
</Link>
</h3>
<Link className="read-more" href={process.env.NEXT_PUBLIC_DASH_URL_LOGIN}>
Learn more<i className="fal fa-arrow-right"></i>
</Link>
</div>
</div>
</div>
)
})
}
</div>
</>
);
}
export default UseCase;
+48
View File
@@ -0,0 +1,48 @@
import React from 'react'
import FooterHomeOne from '../components/FooterHomeOne';
import BackToTop from '../components/BackToTop';
import HeroNews from '../components/News/HeroNews';
import ServiceNav from '../components/navigation/ServiceNav';
import AboutApp from '../components/AboutApp'
import UseCase from './UseCase'
// must be a better way to centralize the style = TEMPORARY USE
import '../assets/css/bootstrap.min.css';
import '../assets/css/custom-animated.css';
import '../assets/css/default.css';
import '../assets/css/font-awesome.min.css';
import '../assets/css/magnific-popup.css';
import '../assets/css/main.css';
import '../assets/css/style.css';
function page() {
return (
<>
<ServiceNav />
<HeroNews
title="Use Cases"
breadcrumb={[
{ link: '/', title: 'Home' },
{ link: '/use-cases', title: 'Use Cases' },
]}
/>
<AboutApp video='' dark='' />
<section className="blogpage-section">
<div className="container">
<div className="row">
{/* <div className="col-lg-12 col-md-7">
<UseCase />
</div> */}
<UseCase />
</div>
</div>
</section>
<FooterHomeOne className='' />
<BackToTop className='' />
</>
)
}
export default page
+4 -2
View File
@@ -5,14 +5,16 @@ services:
context: .
dockerfile: docker/Dockerfile
restart: unless-stopped
#image: registry.chiefsoft.net/wrenchboardmainsite_wrenchboard-www:latest
image: registry.chiefsoft.net/wrenchboardmainsite_wrenchboard-www2025:latest
ports:
- 9581:3000
- ${APP_PORT}:3000
working_dir: /app
volumes:
- ./:/app
- ./src/:/app/src
- ./run.sh:/app/run.sh
- ./node_modules:/app/node_modules
- ./next:/app/.next
extra_hosts:
- backend.wrenchboard.api.live:10.10.33.15
- backend.wrenchboard.api.test:10.10.33.15
+13 -4
View File
@@ -110,6 +110,8 @@ RUN apk add --no-cache --virtual .build-deps-yarn curl gnupg tar \
# COPY docker-entrypoint.sh /usr/local/bin/
# ENTRYPOINT ["docker-entrypoint.sh"]
RUN mkdir -p /app
# set working directory
WORKDIR /app
@@ -117,18 +119,25 @@ WORKDIR /app
ENV PATH /app/node_modules/.bin:$PATH
# install app dependencies
COPY package.json ./
#COPY package-lock.json ./
COPY package.json /app
#COPY package-lock.json /app
RUN npm install --silent
#RUN npm install react-scripts@3.4.1 -g --silent
#RUN npm install -g serve
RUN npm install -g next
RUN npm install sharp
# add app
COPY . ./
COPY . /app
# build app
#RUN npm run-script build
# start app
#CMD ["serve", "-s", "build"]
CMD ["npm", "run", "dev"]
#CMD ["npm", "run", "dev"]
#RUN npm run build
#CMD ["npm", "run", "start"]
CMD ["sh", "-c", "next build && next start"]
+97 -9
View File
@@ -8,18 +8,19 @@
"name": "wrenchboard-www2025",
"version": "0.1.0",
"dependencies": {
"axios": "^1.7.2",
"next": "14.2.5",
"react": "^18",
"react-dom": "^18",
"react-router-dom": "^6.25.1"
},
"devDependencies": {
"@types/node": "^20",
"@types/react": "^18",
"@types/node": "20.14.14",
"@types/react": "18.3.3",
"@types/react-dom": "^18",
"eslint": "^8",
"eslint-config-next": "14.2.5",
"typescript": "^5"
"typescript": "5.5.4"
}
},
"node_modules/@eslint-community/eslint-utils": {
@@ -415,11 +416,10 @@
"license": "MIT"
},
"node_modules/@types/node": {
"version": "20.14.13",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.13.tgz",
"integrity": "sha512-+bHoGiZb8UiQ0+WEtmph2IWQCjIqg8MDZMAV+ppRRhUZnquF5mQkP/9vpSwJClEiSM/C7fZZExPzfU0vJTyp8w==",
"version": "20.14.14",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.14.tgz",
"integrity": "sha512-d64f00982fS9YoOgJkAMolK7MN8Iq3TDdVjchbYHdEmjth/DHowx82GnoA+tVUAN+7vxfYUgAzi+JXbKNd2SDQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"undici-types": "~5.26.4"
}
@@ -436,7 +436,6 @@
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz",
"integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/prop-types": "*",
"csstype": "^3.0.2"
@@ -851,6 +850,11 @@
"dev": true,
"license": "MIT"
},
"node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
"node_modules/available-typed-arrays": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
@@ -877,6 +881,16 @@
"node": ">=4"
}
},
"node_modules/axios": {
"version": "1.7.3",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.7.3.tgz",
"integrity": "sha512-Ar7ND9pU99eJ9GpoGQKhKf58GpUOgnzuaB7ueNQ5BMi0p+LZ5oaEnfF999fAArcTIBwXTCHAmGcHOZJaWPq9Nw==",
"dependencies": {
"follow-redirects": "^1.15.6",
"form-data": "^4.0.0",
"proxy-from-env": "^1.1.0"
}
},
"node_modules/axobject-query": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz",
@@ -1022,6 +1036,17 @@
"dev": true,
"license": "MIT"
},
"node_modules/combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"dependencies": {
"delayed-stream": "~1.0.0"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -1206,6 +1231,14 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
"engines": {
"node": ">=0.4.0"
}
},
"node_modules/dir-glob": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
@@ -2022,6 +2055,25 @@
"dev": true,
"license": "ISC"
},
"node_modules/follow-redirects": {
"version": "1.15.6",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
"integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
"funding": [
{
"type": "individual",
"url": "https://github.com/sponsors/RubenVerborgh"
}
],
"engines": {
"node": ">=4.0"
},
"peerDependenciesMeta": {
"debug": {
"optional": true
}
}
},
"node_modules/for-each": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
@@ -2049,6 +2101,19 @@
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/form-data": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
"integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
"mime-types": "^2.1.12"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
@@ -3075,6 +3140,25 @@
"node": ">=8.6"
}
},
"node_modules/mime-db": {
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/mime-types": {
"version": "2.1.35",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"dependencies": {
"mime-db": "1.52.0"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/minimatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
@@ -3542,6 +3626,11 @@
"react-is": "^16.13.1"
}
},
"node_modules/proxy-from-env": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
},
"node_modules/punycode": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
@@ -4416,7 +4505,6 @@
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz",
"integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==",
"dev": true,
"license": "Apache-2.0",
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
+7 -4
View File
@@ -9,17 +9,20 @@
"lint": "next lint"
},
"dependencies": {
"axios": "^1.7.2",
"next": "14.2.5",
"react": "^18",
"react-dom": "^18",
"react-router-dom": "^6.25.1"
"react-owl-carousel": "^2.3.3",
"react-router-dom": "^6.25.1",
"sharp": "^0.33.4"
},
"devDependencies": {
"@types/node": "^20",
"@types/react": "^18",
"@types/node": "20.14.14",
"@types/react": "18.3.3",
"@types/react-dom": "^18",
"eslint": "^8",
"eslint-config-next": "14.2.5",
"typescript": "^5"
"typescript": "5.5.4"
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 346 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 815 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Some files were not shown because too many files have changed in this diff Show More