Compare commits
16 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| dc3872f8df | |||
| 8dcc1ac5e6 | |||
| 6032926658 | |||
| 12e4483bf3 | |||
| cce169f0d6 | |||
| bfaebf27a0 | |||
| bbd9d5be3f | |||
| ea7e65ecd2 | |||
| cfe6517bc8 | |||
| 6c2f918a88 | |||
| 94b57bb414 | |||
| e2463ac6af | |||
| 29310a8da3 | |||
| 360b84f829 | |||
| c881413b15 | |||
| dcdf3b5816 |
@@ -1,3 +1,4 @@
|
||||
APP_PORT=9081
|
||||
ESLINT_NO_DEV_ERRORS=true
|
||||
|
||||
NEXT_PUBLIC_AUX_ENDPOINT="https://apigate.lotus.g1.wrenchboard.com/en/wrench/api/v1"
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
APP_PORT=9081
|
||||
ESLINT_NO_DEV_ERRORS=true
|
||||
|
||||
NEXT_PUBLIC_AUX_ENDPOINT="https://apigate.lotus.g1.wrenchboard.com/en/wrench/api/v1"
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
APP_PORT=9081
|
||||
ESLINT_NO_DEV_ERRORS=true
|
||||
|
||||
NEXT_PUBLIC_AUX_ENDPOINT="https://apigate.lotus.g1.wrenchboard.com/en/wrench/api/v1"
|
||||
|
||||
@@ -61,7 +61,7 @@ function Drawer({ drawer, action }) {
|
||||
<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>
|
||||
@@ -78,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>
|
||||
|
||||
@@ -5,7 +5,7 @@ async function ContactData(reqData) {
|
||||
for (let value in reqData) {
|
||||
formData.append(value, reqData[value]);
|
||||
}
|
||||
let response = await axios.post(`${process.env.REACT_APP_AUX_ENDPOINT}/sitecontact`, reqData);
|
||||
let response = await axios.post(`${process.env.NEXT_PUBLIC_AUX_ENDPOINT}/sitecontact`, reqData);
|
||||
return response;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
import Axios from 'axios';
|
||||
import getConfig from './../Config/config'
|
||||
|
||||
async function FaqData() {
|
||||
// debugger;
|
||||
var site = getConfig()[0];
|
||||
let response = await Axios.post(`${process.env.REACT_APP_AUX_ENDPOINT}/faq`);
|
||||
let response = await Axios.post(`${process.env.NEXT_PUBLIC_AUX_ENDPOINT}/faq`);
|
||||
return await response;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
import Axios from 'axios';
|
||||
import getConfig from './../Config/config'
|
||||
|
||||
async function JobsData() {
|
||||
var site = getConfig()[0];
|
||||
|
||||
var callData = [{
|
||||
"limit": 10,
|
||||
"page": 1
|
||||
@@ -16,7 +15,7 @@ async function JobsData() {
|
||||
});
|
||||
}
|
||||
*/
|
||||
let response = await Axios.post(process.env.REACT_APP_AUX_ENDPOINT+'/startjoblist', callData);
|
||||
let response = await Axios.post(process.env.NEXT_PUBLIC_AUX_ENDPOINT+'/startjoblist', callData);
|
||||
return await response;
|
||||
}
|
||||
|
||||
|
||||
@@ -6117,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; */
|
||||
}
|
||||
@@ -6752,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) {
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 26 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 88 KiB |
+23
-2
@@ -1,5 +1,9 @@
|
||||
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';
|
||||
@@ -14,8 +18,25 @@ import '../assets/css/style.css';
|
||||
function page() {
|
||||
return (
|
||||
<>
|
||||
<div>Bog Here</div>
|
||||
<FooterHomeOne className={undefined} />
|
||||
<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='' />
|
||||
</>
|
||||
|
||||
)
|
||||
|
||||
@@ -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
|
||||
+32
-30
@@ -1,6 +1,6 @@
|
||||
import React from 'react';
|
||||
import thumb5 from '../assets/images/about-thumb-5.png';
|
||||
import cardImg from '../assets/images/home/card-home-01.png'
|
||||
import cardImg from '../assets/images/home/wrench-card-only.png'
|
||||
// import bg from '../assets/images/background-bg.jpg'
|
||||
import Image from 'next/image';
|
||||
|
||||
@@ -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 ❛❛<span className=''>wrench</span><span className=''>Agent</span>❜❜ 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 ❛❛<span className=''>wrench</span><span className=''>Agent</span>❜❜ 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=""
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -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’t be found.</h3>
|
||||
<p>
|
||||
The page you're looking for isn'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;
|
||||
@@ -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>
|
||||
|
||||
@@ -11,6 +11,7 @@ import TrafficHomeTwo from './TrafficHomeTwo';
|
||||
import AfterHero from './AfterHero';
|
||||
import NextAfterHero from './NextAfterHero';
|
||||
import BackToTop from './BackToTop';
|
||||
import SelectFeatures from "@/app/components/SelectFeatutes";
|
||||
|
||||
|
||||
|
||||
@@ -22,10 +23,11 @@ function HomeOne() {
|
||||
<HomeNav />
|
||||
<HeroHomeOne />
|
||||
<AfterHero />
|
||||
<NextAfterHero />
|
||||
<ServicesHomeOne />
|
||||
<SelectFeatures className='pb-95' />
|
||||
{/*<NextAfterHero />*/}
|
||||
{/*<ServicesHomeOne />*/}
|
||||
<TrafficHomeOne />
|
||||
<TrafficHomeTwo />
|
||||
{/*<TrafficHomeTwo />*/}
|
||||
<BlogHomeOne />
|
||||
<FooterHomeOne />
|
||||
<BackToTop className='' />
|
||||
|
||||
@@ -0,0 +1,252 @@
|
||||
"use client"
|
||||
import React, { useState } from 'react';
|
||||
//import { Link } from 'react-router-dom';
|
||||
import thumb from '../assets/images/features-thumb-01.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>Custom Reactions</span>
|
||||
<h3 className="title">
|
||||
Let the <br /> Conversation flow
|
||||
</h3>
|
||||
<p>
|
||||
Car boot absolutely bladdered posh burke the
|
||||
wireless mush some dodg.
|
||||
</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>Custom Reacyions</span>
|
||||
<h3 className="title">
|
||||
Let the <br /> Conversation flow
|
||||
</h3>
|
||||
<p>
|
||||
Car boot absolutely bladdered posh burke the
|
||||
wireless mush some dodg.
|
||||
</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</span>
|
||||
<h3 className="title">
|
||||
Let the <br /> Conversation flow
|
||||
</h3>
|
||||
<p>
|
||||
Car boot absolutely bladdered posh burke the
|
||||
wireless mush some dodg.
|
||||
</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>Custom Reacyions</span>
|
||||
<h3 className="title">
|
||||
Let the <br /> Conversation flow
|
||||
</h3>
|
||||
<p>
|
||||
Car boot absolutely bladdered posh burke the
|
||||
wireless mush some dodg.
|
||||
</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;
|
||||
@@ -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.REACT_APP_APPLE_APP}>
|
||||
<i className="fab fa-apple" /> Download for iOS
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a className="item-2" href={process.env.REACT_APP_ANDROID_APP}>
|
||||
<i className="fab fa-google-play" /> Download for
|
||||
Android
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
export default ServiceSideMenu;
|
||||
@@ -26,10 +26,10 @@ function Services({ action }) {
|
||||
</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"></i> 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
|
||||
|
||||
@@ -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>Let’s 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&height=600&hl=en&coord=33.8573837,-84.4766235&q=Cumberland+Pkwy+SE,+Atlanta,+GA+30339&ie=UTF8&t=p&z=16&iwloc=B&output=embed"
|
||||
></iframe>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
export default Forms;
|
||||
+15
-2
@@ -1,5 +1,9 @@
|
||||
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';
|
||||
@@ -14,8 +18,17 @@ import '../assets/css/style.css';
|
||||
function page() {
|
||||
return (
|
||||
<>
|
||||
<div>Contact us Here</div>
|
||||
<FooterHomeOne className={undefined} />
|
||||
<ServiceNav />
|
||||
<HeroNews
|
||||
title="Contact us"
|
||||
breadcrumb={[
|
||||
{ link: '/', title: 'home' },
|
||||
{ link: '/contact', title: 'Contact' },
|
||||
]}
|
||||
/>
|
||||
<Forms />
|
||||
<FooterHomeOne className='' />
|
||||
<BackToTop className='' />
|
||||
</>
|
||||
|
||||
)
|
||||
|
||||
@@ -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'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} />
|
||||
</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>
|
||||
</>
|
||||
);
|
||||
}
|
||||
+15
-2
@@ -1,5 +1,9 @@
|
||||
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';
|
||||
@@ -14,8 +18,17 @@ import '../assets/css/style.css';
|
||||
function page() {
|
||||
return (
|
||||
<>
|
||||
<div>Faq Here</div>
|
||||
<FooterHomeOne className={undefined} />
|
||||
<ServiceNav />
|
||||
<HeroNews
|
||||
title="Frequently asked questions"
|
||||
breadcrumb={[
|
||||
{ link: '/', title: 'Home' },
|
||||
{ link: '/faq', title: 'Faq' },
|
||||
]}
|
||||
/>
|
||||
<FAQService />
|
||||
<FooterHomeOne className='' />
|
||||
<BackToTop className='' />
|
||||
</>
|
||||
|
||||
)
|
||||
|
||||
@@ -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 />
|
||||
)
|
||||
}
|
||||
@@ -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 WRENCHBOARD’s 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 WRENCHBOARD’s 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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
+10
-4
@@ -1,6 +1,10 @@
|
||||
import React from 'react'
|
||||
import ServiceNav from '../components/navigation/ServiceNav';
|
||||
import HeroTerms from './HeroTerms'
|
||||
import DetailsService from './DetailsService'
|
||||
import FooterHomeOne from '../components/FooterHomeOne';
|
||||
import HomeNav from '../components/navigation/HomeNav'
|
||||
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';
|
||||
@@ -14,9 +18,11 @@ import '../assets/css/style.css';
|
||||
function page() {
|
||||
return (
|
||||
<>
|
||||
<HomeNav />
|
||||
<div>Terms Here</div>
|
||||
<FooterHomeOne className={undefined} />
|
||||
<ServiceNav />
|
||||
<HeroTerms title="Terms of use" />
|
||||
<DetailsService />
|
||||
<FooterHomeOne className='' />
|
||||
<BackToTop className='' />
|
||||
</>
|
||||
|
||||
)
|
||||
|
||||
@@ -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">
|
||||
|
||||
{<img 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;
|
||||
+26
-2
@@ -1,5 +1,10 @@
|
||||
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';
|
||||
@@ -14,8 +19,27 @@ import '../assets/css/style.css';
|
||||
function page() {
|
||||
return (
|
||||
<>
|
||||
<div>use Case Here</div>
|
||||
<FooterHomeOne className={undefined} />
|
||||
<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='' />
|
||||
</>
|
||||
|
||||
)
|
||||
|
||||
+2
-2
@@ -5,9 +5,9 @@ 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
|
||||
|
||||
@@ -122,6 +122,7 @@ COPY package.json ./
|
||||
RUN npm install --silent
|
||||
#RUN npm install react-scripts@3.4.1 -g --silent
|
||||
#RUN npm install -g serve
|
||||
RUN npm install -g next
|
||||
|
||||
# add app
|
||||
COPY . ./
|
||||
|
||||
Generated
+97
-9
@@ -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"
|
||||
|
||||
+3
-3
@@ -16,11 +16,11 @@
|
||||
"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"
|
||||
}
|
||||
}
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 67 KiB |
+2
-2
@@ -53,13 +53,13 @@
|
||||
|
||||
<title>WrenchBoard</title>
|
||||
<!-- Google tag (gtag.js) -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-WB8G0ZD483"></script>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-DPVPFCJYLP"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', 'G-WB8G0ZD483');
|
||||
gtag('config', 'G-DPVPFCJYLP');
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
Reference in New Issue
Block a user