mirror of
https://gitea.gofwd.group/dstrawsb/ballistic-builder.git
synced 2025-12-06 02:36:44 -05:00
restructuring folders
This commit is contained in:
74
app/components/Footer/FooterLinks/index copy.js
Normal file
74
app/components/Footer/FooterLinks/index copy.js
Normal file
@@ -0,0 +1,74 @@
|
||||
import React, { Component } from 'react'
|
||||
import PropTypes from 'prop-types' //ES6
|
||||
import styles from './styles.module.css'
|
||||
import List from '@mui/material/List'
|
||||
import ListItem from '@mui/material/ListItem';
|
||||
import ListItemText from '@mui/material/ListItemText';
|
||||
import TypoGraphy from '@mui/material/Typography'
|
||||
import Link from 'next/link'
|
||||
import { makeStyles } from '@mui/material/styles';
|
||||
|
||||
const useStyles = makeStyles((theme) => ({
|
||||
root: {
|
||||
width: '75%',
|
||||
maxWidth: 260,
|
||||
/* backgroundColor: theme.palette.background.paper, */
|
||||
float : 'right',
|
||||
marginRight:'2%',
|
||||
fontSize : '.80em'
|
||||
|
||||
|
||||
},
|
||||
}));
|
||||
|
||||
export default function FooterLinks() {
|
||||
|
||||
const classes = useStyles();
|
||||
return (
|
||||
<div className={classes.root}>
|
||||
<TypoGraphy variant="subtitle1" color="inherit" >
|
||||
<List component="nav" >
|
||||
|
||||
<ListItemText inset >
|
||||
<TypoGraphy color="inherit" variant="subtitle2">
|
||||
<Link href="/info/faq"><a className={styles.navLinks}>FAQ</a></Link>
|
||||
</TypoGraphy>
|
||||
</ListItemText>
|
||||
|
||||
<ListItemText inset >
|
||||
<TypoGraphy color="inherit" variant="subtitle2">
|
||||
<Link href="/info/tos"><a className={styles.navLinks}>Terms Of Service</a></Link>
|
||||
</TypoGraphy>
|
||||
</ListItemText>
|
||||
|
||||
<ListItemText inset>
|
||||
<TypoGraphy color="inherit" variant="subtitle2">
|
||||
<Link href="/info/contactus"><a className={styles.navLinks}>Contact Us</a></Link>
|
||||
</TypoGraphy>
|
||||
</ListItemText>
|
||||
|
||||
<ListItemText inset>
|
||||
<TypoGraphy color="inherit" variant="subtitle2">
|
||||
<Link href="/info/privacypolicy"><a className={styles.navLinks}>Privacy Policy</a></Link>
|
||||
</TypoGraphy>
|
||||
</ListItemText>
|
||||
|
||||
<ListItemText inset>
|
||||
<TypoGraphy color="inherit" variant="subtitle2">
|
||||
<Link href="/info/pip"><a className={styles.navLinks}>Personal Information Policy</a></Link>
|
||||
</TypoGraphy>
|
||||
</ListItemText>
|
||||
|
||||
<ListItemText inset>
|
||||
<TypoGraphy color="inherit" variant="subtitle2">
|
||||
<Link href="/info/disclosure"><a className={styles.navLinks}>Disclosure</a></Link>
|
||||
</TypoGraphy>
|
||||
</ListItemText>
|
||||
|
||||
|
||||
</List>
|
||||
</TypoGraphy>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
53
app/components/Footer/FooterLinks/index.js
Normal file
53
app/components/Footer/FooterLinks/index.js
Normal file
@@ -0,0 +1,53 @@
|
||||
import React, { Component } from 'react'
|
||||
import PropTypes from 'prop-types' //ES6
|
||||
import styles from './styles.module.css'
|
||||
import List from '@mui/material/List'
|
||||
import ListItem from '@mui/material/ListItem';
|
||||
import ListItemText from '@mui/material/ListItemText';
|
||||
import TypoGraphy from '@mui/material/Typography'
|
||||
import Link from 'next/link'
|
||||
import { withStyles } from '@mui/material/styles';
|
||||
import styled from '@emotion/styled'
|
||||
import FooterLink from '@/app/Fragments/FooterLink';
|
||||
|
||||
|
||||
class FooterLinks extends React.Component {
|
||||
constructor(props) {
|
||||
super(props)
|
||||
this.state = {
|
||||
}
|
||||
}
|
||||
|
||||
render() {
|
||||
const { classes } = this.props;
|
||||
return (
|
||||
<FooterLinksStyled>
|
||||
<div className="footer-links">
|
||||
<List component="nav" >
|
||||
<React.Fragment>
|
||||
<FooterLink href="/info/faq" title="FAQ" />
|
||||
<FooterLink href="/info/tos" title="Terms Of Service" />
|
||||
<FooterLink href="/info/contactus" title="Contact Us" />
|
||||
<FooterLink href="/info/privacypolicy" title="Privacy Policy" />
|
||||
<FooterLink href="/info/pip" title="Personal Information Policy" />
|
||||
<FooterLink href="/info/disclosure" title="Disclosure" />
|
||||
<FooterLink href="/info/about" title="About Us" />
|
||||
</React.Fragment>
|
||||
</List>
|
||||
</div>
|
||||
</FooterLinksStyled>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
const FooterLinksStyled = styled.div`
|
||||
.footer-links nav {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-around;
|
||||
width: 100%;
|
||||
}
|
||||
`
|
||||
// export default withStyles(useStyles)(FooterLinks);
|
||||
|
||||
export default FooterLinks;
|
||||
23
app/components/Footer/FooterLinks/package.json
Normal file
23
app/components/Footer/FooterLinks/package.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"name": "footerlinks",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"main": "./index",
|
||||
"author": {
|
||||
"name": "Don Strawsburg",
|
||||
"email": "don@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
},
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Don Strawsburg",
|
||||
"email": "don@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
},
|
||||
{
|
||||
"name": "Sean Strawsburg",
|
||||
"email": "sean@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
}
|
||||
]
|
||||
}
|
||||
7
app/components/Footer/FooterLinks/styles.module.css
Normal file
7
app/components/Footer/FooterLinks/styles.module.css
Normal file
@@ -0,0 +1,7 @@
|
||||
.navLinks {
|
||||
color:#000;
|
||||
}
|
||||
.navLinks:hover {
|
||||
font-weight: bold;
|
||||
text-decoration : none;
|
||||
}
|
||||
43
app/components/Footer/index.tsx
Normal file
43
app/components/Footer/index.tsx
Normal file
@@ -0,0 +1,43 @@
|
||||
import React, { Component } from "react";
|
||||
import PropTypes from "prop-types";
|
||||
import styles from './styles.module.scss';
|
||||
import Copyright from "@/app/components/Info/Copyright";
|
||||
import FooterLinks from "./FooterLinks";
|
||||
import Link from "next/link";
|
||||
import { infoLinks } from "@/app/lib/linkList/infoLinks";
|
||||
import { sectionLinks } from "@/app/lib/linkList/sectionLinks";
|
||||
import Armory from '@/app/Fragments/Armory';
|
||||
import GroundZero from "@/app/Fragments/GroundZero";
|
||||
import Information from "@/app/Fragments/Information";
|
||||
export const Footer = () => {
|
||||
|
||||
return (
|
||||
// <div className={styles.Footer}>
|
||||
// <FooterLinks></FooterLinks>
|
||||
// <Copyright></Copyright>
|
||||
// </div>
|
||||
<>
|
||||
<footer className={styles.footer}>
|
||||
<nav className={styles.linksContainer}>
|
||||
<div className={styles.brand}>
|
||||
<div className={styles.logo}>
|
||||
<span>Logo</span>
|
||||
</div>
|
||||
<p>Find Parts.</p>
|
||||
<p>Build Guns.</p>
|
||||
<p>Freedom On.</p>
|
||||
</div>
|
||||
<Armory titleText="Armory"/>
|
||||
<GroundZero titleText="Ground Zero"/>
|
||||
<Information titleText="Information"/>
|
||||
</nav>
|
||||
</footer>
|
||||
<Copyright></Copyright>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Footer.propTypes = {};
|
||||
|
||||
export default Footer;
|
||||
23
app/components/Footer/package.json
Normal file
23
app/components/Footer/package.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"name": "footer",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"main": "./index",
|
||||
"author": {
|
||||
"name": "Don Strawsburg",
|
||||
"email": "don@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
},
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Don Strawsburg",
|
||||
"email": "don@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
},
|
||||
{
|
||||
"name": "Sean Strawsburg",
|
||||
"email": "sean@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
}
|
||||
]
|
||||
}
|
||||
59
app/components/Footer/styles.module.scss
Normal file
59
app/components/Footer/styles.module.scss
Normal file
@@ -0,0 +1,59 @@
|
||||
@import '../../scss/variables.scss';
|
||||
|
||||
.footer {
|
||||
background: #4c5c3f;
|
||||
min-height: 300px;
|
||||
height: 100%;
|
||||
padding: 1rem 0;
|
||||
border-top: 2px solid #000;
|
||||
|
||||
.brand {
|
||||
font-weight: bolder;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 1px;
|
||||
font-size: 1.25em;
|
||||
color:#FFF;
|
||||
|
||||
.logo span {
|
||||
display: inline-block;
|
||||
height: 100px;
|
||||
width: 100px;
|
||||
background: #FFF;
|
||||
color:#4c5c3f;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.linksContainer {
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
align-items: flex-start;
|
||||
|
||||
ul {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
|
||||
li {
|
||||
color:#FFF;
|
||||
|
||||
a {
|
||||
color: #fff;
|
||||
transition: all 500ms ease;
|
||||
|
||||
&:hover {
|
||||
color: #ADA17B;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
h4 {
|
||||
color: #FFF;
|
||||
border-bottom: 2px solid #fff;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
}
|
||||
108
app/components/Header/index.tsx
Normal file
108
app/components/Header/index.tsx
Normal file
@@ -0,0 +1,108 @@
|
||||
import React, { Component } from 'react';
|
||||
import PropTypes from 'prop-types'; //ES6
|
||||
import styles from './styles.module.css';
|
||||
import Link from 'next/link';
|
||||
import AppBar from '@mui/material/AppBar';
|
||||
import Toolbar from '@mui/material/Toolbar';
|
||||
import List from '@mui/material/List';
|
||||
import ListItem from '@mui/material/ListItem';
|
||||
import ListItemText from '@mui/material//ListItemText';
|
||||
// import TypoGraphy from '@mui/material/Typography';
|
||||
import Button from '@mui/material//Button';
|
||||
import { infoLinks } from '@/app/lib/linkList/infoLinks';
|
||||
import sectionLinks from '@/app/lib/linkList/sectionLinks';
|
||||
|
||||
export default class Header extends Component {
|
||||
constructor(props) {
|
||||
super(props)
|
||||
this.state = {
|
||||
}
|
||||
}
|
||||
|
||||
render() {
|
||||
return (
|
||||
<div>
|
||||
<div className="topheader">
|
||||
<Link href="/"><a className="logo">Gun Builder</a>
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
<AppBar position="static">
|
||||
<Toolbar>
|
||||
<List component="nav">
|
||||
<ListItem component="div" className="nav-item">
|
||||
<ListItemText inset>
|
||||
<Link href={sectionLinks.UPPERS.URL}><a className={styles.navLinks}>{sectionLinks.UPPERS.TEXT}</a></Link>
|
||||
</ListItemText>
|
||||
|
||||
<ListItemText inset>
|
||||
<Link href={sectionLinks.PARTSLIST.URL}><a className={styles.navLinks}>{sectionLinks.PARTSLIST.TEXT}</a></Link>
|
||||
</ListItemText>
|
||||
|
||||
<ListItemText inset>
|
||||
<Link href={sectionLinks.BUILDS.URL}><a className={styles.navLinks}>{sectionLinks.BUILDS.TEXT}</a></Link>
|
||||
</ListItemText>
|
||||
|
||||
<ListItemText inset>
|
||||
<Link href={sectionLinks.BLOG.URL}><a className={styles.navLinks}>{sectionLinks.BLOG.TEXT}</a></Link>
|
||||
</ListItemText>
|
||||
|
||||
{/* <ListItemText inset>
|
||||
<Link href="/admin"><a className={styles.navLinks}>Admin</a></Link>
|
||||
</ListItemText> */}
|
||||
</ListItem>
|
||||
|
||||
</List>
|
||||
</Toolbar>
|
||||
</AppBar>
|
||||
|
||||
<style jsx>{`
|
||||
header {
|
||||
background:#101010;
|
||||
color:#fff;
|
||||
}
|
||||
.topheader {
|
||||
background:#111;
|
||||
height: 4em;
|
||||
color: #000;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.topheader a {
|
||||
color:#fff;
|
||||
padding-left: 15px;
|
||||
text-transform: uppercase;
|
||||
font-weight: bold;
|
||||
letter-spacing: 2px;
|
||||
}
|
||||
.nav {
|
||||
display: flex;
|
||||
background: #4c5d34;
|
||||
}
|
||||
ul {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
display: flex;
|
||||
margin: 0;
|
||||
height: 100%;
|
||||
}
|
||||
ul li {
|
||||
margin-right: 10px;
|
||||
padding:1em 1.5em;
|
||||
border-right:2px solid rgba(0,0,0,.3);
|
||||
text-transform: uppercase;
|
||||
font-weight:bold;
|
||||
letter-spacing:2px;
|
||||
}
|
||||
`}</style>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Header.propTypes = {
|
||||
|
||||
};
|
||||
23
app/components/Header/package.json
Normal file
23
app/components/Header/package.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"name": "header",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"main": "./index",
|
||||
"author": {
|
||||
"name": "Don Strawsburg",
|
||||
"email": "don@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
},
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Don Strawsburg",
|
||||
"email": "don@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
},
|
||||
{
|
||||
"name": "Sean Strawsburg",
|
||||
"email": "sean@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
}
|
||||
]
|
||||
}
|
||||
13
app/components/Header/styles.module.css
Normal file
13
app/components/Header/styles.module.css
Normal file
@@ -0,0 +1,13 @@
|
||||
.navLinks {
|
||||
color:white;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 2px;
|
||||
font-weight: bold;
|
||||
transition: all 500ms ease;
|
||||
}
|
||||
.navLinks:hover {
|
||||
text-decoration : none;
|
||||
}
|
||||
.nav-item:hover {
|
||||
background-color: pink;
|
||||
}
|
||||
45
app/components/Hero/index.tsx
Normal file
45
app/components/Hero/index.tsx
Normal file
@@ -0,0 +1,45 @@
|
||||
import React from 'react';
|
||||
import Typography from '@mui/material/Typography';
|
||||
import MuiLink from '@mui/material/Link';
|
||||
import Button from '@mui/material/Button';
|
||||
|
||||
export default class Hero extends React.Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.state = {
|
||||
show: true,
|
||||
};
|
||||
}
|
||||
|
||||
render() {
|
||||
return (
|
||||
|
||||
<div className="hero" styles={{ backgroundImage:`url({${this.props.image}})` }}>
|
||||
<div className="hero-text">
|
||||
<h3>{this.props.heading}</h3>
|
||||
<p>{this.props.subheading}</p>
|
||||
<Button href={this.props.link} variant="contained" color="primary">
|
||||
{this.props.linktext}
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
<style jsx>{`
|
||||
.hero {
|
||||
// background:url('/gb-hero.jpg');
|
||||
background-size:cover;
|
||||
min-height:35vw;
|
||||
color: #fff;
|
||||
display:flex;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
}
|
||||
.hero-text {
|
||||
padding: 2em;
|
||||
}
|
||||
`}</style>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
23
app/components/Hero/package.json
Normal file
23
app/components/Hero/package.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"name": "hero",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"main": "./index",
|
||||
"author": {
|
||||
"name": "Don Strawsburg",
|
||||
"email": "don@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
},
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Don Strawsburg",
|
||||
"email": "don@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
},
|
||||
{
|
||||
"name": "Sean Strawsburg",
|
||||
"email": "sean@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
}
|
||||
]
|
||||
}
|
||||
0
app/components/Hero/styles.module.css
Normal file
0
app/components/Hero/styles.module.css
Normal file
35
app/components/Info/About/index.tsx
Normal file
35
app/components/Info/About/index.tsx
Normal file
@@ -0,0 +1,35 @@
|
||||
import React, { Component } from 'react'
|
||||
import PropTypes from 'prop-types' //ES6
|
||||
import styles from './styles.module.css'
|
||||
import { useQuery, useMutation, gql } from "@apollo/client";
|
||||
|
||||
export default function About(props) {
|
||||
|
||||
const GET_SITE_CONTENT = gql`
|
||||
query Get_Site_Content {
|
||||
site_contents(where: {content_id: {_eq: "ABOUTUS"}}, order_by: {content: asc}) {
|
||||
id
|
||||
content_id
|
||||
content
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
const { loading, error, data } = useQuery(GET_SITE_CONTENT);
|
||||
if (loading) return "Loading ...";
|
||||
if (error) return `Error! ${error.message}`;
|
||||
|
||||
return (
|
||||
<div >
|
||||
<h1>About</h1>
|
||||
{data.site_contents.map((site_content: { content: any; }) => (
|
||||
<span dangerouslySetInnerHTML={{ __html: site_content.content }} />
|
||||
))}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
About.propTypes = {
|
||||
|
||||
};
|
||||
23
app/components/Info/About/package.json
Normal file
23
app/components/Info/About/package.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"name": "about",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"main": "./index",
|
||||
"author": {
|
||||
"name": "Don Strawsburg",
|
||||
"email": "don@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
},
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Don Strawsburg",
|
||||
"email": "don@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
},
|
||||
{
|
||||
"name": "Sean Strawsburg",
|
||||
"email": "sean@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
}
|
||||
]
|
||||
}
|
||||
0
app/components/Info/About/styles.module.css
Normal file
0
app/components/Info/About/styles.module.css
Normal file
39
app/components/Info/ContactUs/index.tsx
Normal file
39
app/components/Info/ContactUs/index.tsx
Normal file
@@ -0,0 +1,39 @@
|
||||
import React, { Component } from 'react'
|
||||
import TypoGraphy from '@mui/material/Typography';
|
||||
import PropTypes from 'prop-types' //ES6
|
||||
import styles from './styles.module.css';
|
||||
import constants from '@/app/lib/constants'
|
||||
|
||||
import { useQuery, useMutation, gql } from "@apollo/client";
|
||||
|
||||
export default function ContactUs(props) {
|
||||
|
||||
const GET_SITE_CONTENT = gql`
|
||||
query Get_Site_Content {
|
||||
site_contents(where: {content_id: {_eq: "CONTACTUS"}}, order_by: {content: asc}) {
|
||||
id
|
||||
content_id
|
||||
content
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
const { loading, error, data } = useQuery(GET_SITE_CONTENT);
|
||||
if (loading) return "Loading ...";
|
||||
if (error) return `Error! ${error.message}`;
|
||||
|
||||
return (
|
||||
<div>
|
||||
<TypoGraphy paragraph='true' variant="body" color="inherit" >
|
||||
{data.site_contents.map((site_content: { content: any; }) => (
|
||||
<span dangerouslySetInnerHTML={{ __html: site_content.content }} />
|
||||
))}
|
||||
</TypoGraphy>
|
||||
</div>
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
ContactUs.propTypes = {
|
||||
|
||||
};
|
||||
23
app/components/Info/ContactUs/package.json
Normal file
23
app/components/Info/ContactUs/package.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"name": "contactus",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"main": "./index",
|
||||
"author": {
|
||||
"name": "Don Strawsburg",
|
||||
"email": "don@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
},
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Don Strawsburg",
|
||||
"email": "don@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
},
|
||||
{
|
||||
"name": "Sean Strawsburg",
|
||||
"email": "sean@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
}
|
||||
]
|
||||
}
|
||||
0
app/components/Info/ContactUs/styles.module.css
Normal file
0
app/components/Info/ContactUs/styles.module.css
Normal file
41
app/components/Info/Copyright/index.tsx
Normal file
41
app/components/Info/Copyright/index.tsx
Normal file
@@ -0,0 +1,41 @@
|
||||
import React, { Component } from 'react';
|
||||
import { COMPANY_NAME, COMPANY_URL } from '@/app/lib/constants';
|
||||
import Typography from '@mui/material/Typography';
|
||||
import MuiLink from '@mui/material/Link';
|
||||
import styles from './styles.module.css'
|
||||
import Link from 'next/link'
|
||||
import styled from '@emotion/styled'
|
||||
|
||||
|
||||
export default class Copyright extends Component {
|
||||
render() {
|
||||
return (
|
||||
<CopyStyled>
|
||||
<div className="copyright">© {new Date().getFullYear()} {' '}
|
||||
<Link href={COMPANY_URL}>
|
||||
<a>{COMPANY_NAME}</a>
|
||||
</Link>{' '}
|
||||
<span>All Rights Reserved.</span>
|
||||
</div>
|
||||
</CopyStyled>
|
||||
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
const CopyStyled = styled.div`
|
||||
.copyright {
|
||||
background: #4c5c3f;
|
||||
font-size:.80em;
|
||||
text-transform: uppercase;
|
||||
color:#FFF;
|
||||
display: block;
|
||||
width:100%;
|
||||
text-align:center;
|
||||
|
||||
a {
|
||||
color:#FFF;
|
||||
text-decoration:none;
|
||||
}
|
||||
}
|
||||
`
|
||||
23
app/components/Info/Copyright/package.json
Normal file
23
app/components/Info/Copyright/package.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"name": "copyright",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"main": "./index",
|
||||
"author": {
|
||||
"name": "Don Strawsburg",
|
||||
"email": "don@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
},
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Don Strawsburg",
|
||||
"email": "don@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
},
|
||||
{
|
||||
"name": "Sean Strawsburg",
|
||||
"email": "sean@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
}
|
||||
]
|
||||
}
|
||||
7
app/components/Info/Copyright/styles.module.css
Normal file
7
app/components/Info/Copyright/styles.module.css
Normal file
@@ -0,0 +1,7 @@
|
||||
.white {
|
||||
color: white;
|
||||
font-size: .5em;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 2px;
|
||||
font-family: "hind";
|
||||
}
|
||||
54
app/components/Info/Disclosure/index.tsx
Normal file
54
app/components/Info/Disclosure/index.tsx
Normal file
@@ -0,0 +1,54 @@
|
||||
import React, { Component } from 'react'
|
||||
import TypoGraphy from '@mui/material/Typography';
|
||||
import PropTypes from 'prop-types' //ES6
|
||||
import styles from './styles.module.css';
|
||||
import constants from '@/app/lib/constants'
|
||||
import {SITE_CONT_TYPE} from '@/app/lib/constants'
|
||||
import { useQuery, useMutation, gql } from "@apollo/client";
|
||||
|
||||
export default function Disclosure(props) {
|
||||
|
||||
const GET_SITE_CONTENT = gql`
|
||||
query Get_Site_Content {
|
||||
site_contents(where: {content_id: {_eq: ${SITE_CONT_TYPE.DISCLOSURE}}}, order_by: {content: asc}) {
|
||||
id
|
||||
content_id
|
||||
content
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
const { loading, error, data } = useQuery(GET_SITE_CONTENT);
|
||||
if (loading) return "Loading ...";
|
||||
if (error) return `Error! ${error.message}`;
|
||||
return (
|
||||
<div>
|
||||
<TypoGraphy paragraph={true} variant="body1" color="inherit" >
|
||||
{constants.SITE_NAME}, owned by {constants.COMPANY_NAME}, receives compensation through affiliate relationships with merchants listed on this site. Please know that this in no way affects reviews, benchmarks, content, or this site's opinions of products, services, manufacturers, partners, or merchants.
|
||||
</TypoGraphy>
|
||||
<TypoGraphy paragraph={true} variant="body1" color="inherit" >
|
||||
The mission of {constants.SITE_NAME} is to provide the best functionality for this site's users, regardless of any potential affiliate commissions.
|
||||
{constants.SITE_NAME} does not accept donations. Instead, income received from affiliate relationships funds site maintenance and feature development. If you desire to donate to PCPartPicker, I kindly ask that you consider donating to a charitable organization instead. I am particularly fond of the NRA, a non-profit organization that provides safety training to gun owners.
|
||||
</TypoGraphy>
|
||||
<div>
|
||||
{data.site_contents.map((site_content: { content: any; }) => (
|
||||
<span dangerouslySetInnerHTML={{ __html: site_content.content }} />
|
||||
))}
|
||||
</div>
|
||||
<TypoGraphy paragraph={true} variant="body1" color="inherit" >
|
||||
Thanks,
|
||||
</TypoGraphy>
|
||||
<TypoGraphy paragraph={true} variant="body1" color="inherit" >
|
||||
{constants.COMPANY_NAME}
|
||||
</TypoGraphy>
|
||||
<TypoGraphy paragraph={true} variant="body1" color="inherit" >
|
||||
{constants.SITE_NAME} is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to amazon.com.
|
||||
</TypoGraphy>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
Disclosure.propTypes = {
|
||||
|
||||
};
|
||||
23
app/components/Info/Disclosure/package.json
Normal file
23
app/components/Info/Disclosure/package.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"name": "disclosure",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"main": "./index",
|
||||
"author": {
|
||||
"name": "Don Strawsburg",
|
||||
"email": "don@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
},
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Don Strawsburg",
|
||||
"email": "don@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
},
|
||||
{
|
||||
"name": "Sean Strawsburg",
|
||||
"email": "sean@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
}
|
||||
]
|
||||
}
|
||||
0
app/components/Info/Disclosure/styles.module.css
Normal file
0
app/components/Info/Disclosure/styles.module.css
Normal file
34
app/components/Info/Faq/index.tsx
Normal file
34
app/components/Info/Faq/index.tsx
Normal file
@@ -0,0 +1,34 @@
|
||||
import React, { Component } from 'react';
|
||||
import styles from './styles.module.css'
|
||||
import { useQuery, useMutation, gql } from "@apollo/client";
|
||||
|
||||
export default function Faq(props) {
|
||||
|
||||
const GET_SITE_CONTENT_FAQ = gql`
|
||||
query Get_Site_Content_Faq {
|
||||
site_contents(where: {content_id: {_eq: "FAQ"}}, order_by: {content: asc}) {
|
||||
id
|
||||
content_id
|
||||
content
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
const { loading, error, data } = useQuery(GET_SITE_CONTENT_FAQ);
|
||||
if(loading) return "Loading ...";
|
||||
if(error) return `Error! ${error.message}` ;
|
||||
|
||||
return (
|
||||
|
||||
<div className="faq container">
|
||||
{props.children}
|
||||
<h3>Frequently Asked Questions</h3>
|
||||
<div>
|
||||
{data.site_contents.map((site_content: { content: any; }) => (
|
||||
<span dangerouslySetInnerHTML={{__html: site_content.content}}/>
|
||||
))}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
23
app/components/Info/Faq/package.json
Normal file
23
app/components/Info/Faq/package.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"name": "faq",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"main": "./index",
|
||||
"author": {
|
||||
"name": "Don Strawsburg",
|
||||
"email": "don@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
},
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Don Strawsburg",
|
||||
"email": "don@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
},
|
||||
{
|
||||
"name": "Sean Strawsburg",
|
||||
"email": "sean@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
}
|
||||
]
|
||||
}
|
||||
0
app/components/Info/Faq/styles.module.css
Normal file
0
app/components/Info/Faq/styles.module.css
Normal file
39
app/components/Info/PIP/index.tsx
Normal file
39
app/components/Info/PIP/index.tsx
Normal file
@@ -0,0 +1,39 @@
|
||||
import React, { Component } from 'react'
|
||||
import Head from 'next/head';
|
||||
import TypoGraphy from '@mui/material/Typography';
|
||||
import PropTypes from 'prop-types' //ES6
|
||||
import styles from './styles.module.css';
|
||||
import constants from '@/app/lib/constants'
|
||||
import { useQuery, useMutation, gql } from "@apollo/client";
|
||||
|
||||
export default function PIP(props) {
|
||||
const GET_SITE_CONTENT = gql`
|
||||
query Get_Site_Content {
|
||||
site_contents(where: {content_id: {_eq: "PIP"}}, order_by: {content: asc}) {
|
||||
id
|
||||
content_id
|
||||
content
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
const { loading, error, data } = useQuery(GET_SITE_CONTENT);
|
||||
if (loading) return "Loading ...";
|
||||
if (error) return `Error! ${error.message}`;
|
||||
|
||||
return (
|
||||
<div>
|
||||
<Head title="Personal Information" />
|
||||
<TypoGraphy paragraph='true' variant="body" color="inherit" >
|
||||
|
||||
{data.site_contents.map((site_content: { content: any; }) => (
|
||||
<span dangerouslySetInnerHTML={{ __html: site_content.content }} />
|
||||
))}
|
||||
</TypoGraphy>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
PIP.propTypes = {
|
||||
|
||||
};
|
||||
23
app/components/Info/PIP/package.json
Normal file
23
app/components/Info/PIP/package.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"name": "pip",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"main": "./index",
|
||||
"author": {
|
||||
"name": "Don Strawsburg",
|
||||
"email": "don@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
},
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Don Strawsburg",
|
||||
"email": "don@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
},
|
||||
{
|
||||
"name": "Sean Strawsburg",
|
||||
"email": "sean@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
}
|
||||
]
|
||||
}
|
||||
0
app/components/Info/PIP/styles.module.css
Normal file
0
app/components/Info/PIP/styles.module.css
Normal file
35
app/components/Info/PrivacyPolicy/index.tsx
Normal file
35
app/components/Info/PrivacyPolicy/index.tsx
Normal file
@@ -0,0 +1,35 @@
|
||||
import React, { Component } from 'react'
|
||||
import TypoGraphy from '@mui/material/Typography';
|
||||
import Head from 'next/head';
|
||||
import PropTypes from 'prop-types' //ES6
|
||||
import styles from './styles.module.css';
|
||||
import constants from '@/app/lib/constants'
|
||||
import { useQuery, useMutation, gql } from "@apollo/client";
|
||||
|
||||
export default function PrivacyPolicy(props) {
|
||||
const GET_SITE_CONTENT = gql`
|
||||
query Get_Site_Content {
|
||||
site_contents(where: {content_id: {_eq: "PP"}}, order_by: {content: asc}) {
|
||||
id
|
||||
content_id
|
||||
content
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
const { loading, error, data } = useQuery(GET_SITE_CONTENT);
|
||||
if (loading) return "Loading ...";
|
||||
if (error) return `Error! ${error.message}`;
|
||||
|
||||
return (
|
||||
<div>
|
||||
<Head title="Privacy Policy" />
|
||||
<TypoGraphy paragraph='true' variant="body" color="inherit" >
|
||||
{data.site_contents.map((site_content: { content: any; }) => (
|
||||
<span dangerouslySetInnerHTML={{ __html: site_content.content }} />
|
||||
))}
|
||||
</TypoGraphy>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
23
app/components/Info/PrivacyPolicy/package.json
Normal file
23
app/components/Info/PrivacyPolicy/package.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"name": "privacypolicy",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"main": "./index",
|
||||
"author": {
|
||||
"name": "Don Strawsburg",
|
||||
"email": "don@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
},
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Don Strawsburg",
|
||||
"email": "don@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
},
|
||||
{
|
||||
"name": "Sean Strawsburg",
|
||||
"email": "sean@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
}
|
||||
]
|
||||
}
|
||||
0
app/components/Info/PrivacyPolicy/styles.module.css
Normal file
0
app/components/Info/PrivacyPolicy/styles.module.css
Normal file
38
app/components/Info/TermsOfService/index.tsx
Normal file
38
app/components/Info/TermsOfService/index.tsx
Normal file
@@ -0,0 +1,38 @@
|
||||
import React, { Component } from 'react'
|
||||
import Head from 'next/head';
|
||||
import TypoGraphy from '@mui/material/Typography';
|
||||
import PropTypes from 'prop-types' //ES6
|
||||
import constants from '@/app/lib/constants'
|
||||
import { useQuery, useMutation, gql } from "@apollo/client";
|
||||
|
||||
export default function TermsOfService(props) {
|
||||
const GET_SITE_CONTENT = gql`
|
||||
query Get_Site_Content {
|
||||
site_contents(where: {content_id: {_eq: "TOS"}}, order_by: {content: asc}) {
|
||||
id
|
||||
content_id
|
||||
content
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
const { loading, error, data } = useQuery(GET_SITE_CONTENT);
|
||||
if (loading) return "Loading ...";
|
||||
if (error) return `Error! ${error.message}`;
|
||||
return (
|
||||
<div>
|
||||
<Head title="Terms Of Service" />
|
||||
<TypoGraphy paragraph='true' variant="body" color="inherit" >
|
||||
<div>
|
||||
{data.site_contents.map((site_content: { content: any; }) => (
|
||||
<span dangerouslySetInnerHTML={{ __html: site_content.content }} />
|
||||
))}
|
||||
</div>
|
||||
</TypoGraphy>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
TermsOfService.propTypes = {
|
||||
|
||||
};
|
||||
23
app/components/Info/TermsOfService/package.json
Normal file
23
app/components/Info/TermsOfService/package.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"name": "termsofservice",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"main": "./index.tsx",
|
||||
"author": {
|
||||
"name": "Don Strawsburg",
|
||||
"email": "don@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
},
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Don Strawsburg",
|
||||
"email": "don@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
},
|
||||
{
|
||||
"name": "Sean Strawsburg",
|
||||
"email": "sean@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
}
|
||||
]
|
||||
}
|
||||
132
app/components/SignIn/index.tsx
Normal file
132
app/components/SignIn/index.tsx
Normal file
@@ -0,0 +1,132 @@
|
||||
import React from 'react';
|
||||
import Avatar from '@mui/material/Avatar';
|
||||
import Button from '@mui/material/Button';
|
||||
import CssBaseline from '@mui/material/CssBaseline';
|
||||
import TextField from '@mui/material/TextField';
|
||||
import FormControlLabel from '@mui/material/FormControlLabel';
|
||||
import Checkbox from '@mui/material/Checkbox';
|
||||
import Link from '@mui/material/Link';
|
||||
import Paper from '@mui/material/Paper';
|
||||
import Box from '@mui/material/Box';
|
||||
import Grid from '@mui/material/Grid';
|
||||
import LockOutlinedIcon from '@material-ui/icons/LockOutlined';
|
||||
import Typography from '@mui/material/Typography';
|
||||
import { makeStyles } from '@mui/material/styles';
|
||||
import styles from "./styles.module.css";
|
||||
|
||||
function Copyright() {
|
||||
return (
|
||||
<Typography variant="body2" color="textSecondary" align="center">
|
||||
{'Copyright © '}
|
||||
<Link color="inherit" href="https://material-ui.com/">
|
||||
Your Website
|
||||
</Link>{' '}
|
||||
{new Date().getFullYear()}
|
||||
{'.'}
|
||||
</Typography>
|
||||
);
|
||||
}
|
||||
|
||||
const useStyles = makeStyles((theme) => ({
|
||||
root: {
|
||||
height: '100vh',
|
||||
},
|
||||
image: {
|
||||
backgroundImage: 'url(https://source.unsplash.com/random)',
|
||||
backgroundRepeat: 'no-repeat',
|
||||
backgroundColor:
|
||||
theme.palette.type === 'light' ? theme.palette.grey[50] : theme.palette.grey[900],
|
||||
backgroundSize: 'cover',
|
||||
backgroundPosition: 'center',
|
||||
},
|
||||
paper: {
|
||||
margin: theme.spacing(8, 4),
|
||||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
alignItems: 'center',
|
||||
},
|
||||
avatar: {
|
||||
margin: theme.spacing(1),
|
||||
backgroundColor: theme.palette.secondary.main,
|
||||
},
|
||||
form: {
|
||||
width: '100%', // Fix IE 11 issue.
|
||||
marginTop: theme.spacing(1),
|
||||
},
|
||||
submit: {
|
||||
margin: theme.spacing(3, 0, 2),
|
||||
},
|
||||
}));
|
||||
|
||||
export default function SignInSide() {
|
||||
const classes = useStyles();
|
||||
|
||||
return (
|
||||
<Grid container component="main" className={classes.root}>
|
||||
<CssBaseline />
|
||||
<Grid item xs={false} sm={4} md={7} className={classes.image} />
|
||||
<Grid item xs={12} sm={8} md={5} component={Paper} elevation={6} square>
|
||||
<div className={classes.paper}>
|
||||
<Avatar className={classes.avatar}>
|
||||
<LockOutlinedIcon />
|
||||
</Avatar>
|
||||
<Typography component="h1" variant="h5">
|
||||
Sign in
|
||||
</Typography>
|
||||
<form className={classes.form} noValidate>
|
||||
<TextField
|
||||
variant="outlined"
|
||||
margin="normal"
|
||||
required
|
||||
fullWidth
|
||||
id="email"
|
||||
label="Email Address"
|
||||
name="email"
|
||||
autoComplete="email"
|
||||
autoFocus
|
||||
/>
|
||||
<TextField
|
||||
variant="outlined"
|
||||
margin="normal"
|
||||
required
|
||||
fullWidth
|
||||
name="password"
|
||||
label="Password"
|
||||
type="password"
|
||||
id="password"
|
||||
autoComplete="current-password"
|
||||
/>
|
||||
<FormControlLabel
|
||||
control={<Checkbox value="remember" color="primary" />}
|
||||
label="Remember me"
|
||||
/>
|
||||
<Button
|
||||
type="submit"
|
||||
fullWidth
|
||||
variant="contained"
|
||||
color="primary"
|
||||
className={classes.submit}
|
||||
>
|
||||
Sign In
|
||||
</Button>
|
||||
<Grid container>
|
||||
<Grid item xs>
|
||||
<Link href="#" variant="body2">
|
||||
Forgot password?
|
||||
</Link>
|
||||
</Grid>
|
||||
<Grid item>
|
||||
<Link href="#" variant="body2">
|
||||
{"Don't have an account? Sign Up"}
|
||||
</Link>
|
||||
</Grid>
|
||||
</Grid>
|
||||
<Box mt={5}>
|
||||
<Copyright />
|
||||
</Box>
|
||||
</form>
|
||||
</div>
|
||||
</Grid>
|
||||
</Grid>
|
||||
);
|
||||
}
|
||||
23
app/components/SignIn/package.json
Normal file
23
app/components/SignIn/package.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"name": "signin",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"main": "./index",
|
||||
"author": {
|
||||
"name": "Don Strawsburg",
|
||||
"email": "don@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
},
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Don Strawsburg",
|
||||
"email": "don@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
},
|
||||
{
|
||||
"name": "Sean Strawsburg",
|
||||
"email": "sean@goforward.group",
|
||||
"url": "https://goforward.group/"
|
||||
}
|
||||
]
|
||||
}
|
||||
1
app/components/SignIn/styles.module.css
Normal file
1
app/components/SignIn/styles.module.css
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
Reference in New Issue
Block a user