From cca47965a619da7c7c15b070b865e9926d1e088f Mon Sep 17 00:00:00 2001 From: Don Starwsburg Date: Thu, 14 Nov 2024 17:46:13 -0500 Subject: [PATCH 1/2] work and created develop branch --- Example Code/BasicClassComponent/index.js | 25 + Example Code/BasicClassComponent/package.json | 23 + .../BasicClassComponent/styles.module.css | 0 Example Code/BasicFunctionComponent /index.js | 10 + .../BasicFunctionComponent /package.json | 23 + .../BasicFunctionComponent /styles.module.css | 0 Example Code/Card/index.css | 14 + Example Code/Card/index.tsx | 23 + Example Code/CardList/index.css | 3 + Example Code/CardList/index.js | 38 + Example Code/Weather/index.js | 38 + Example Code/Weather/styles.module.css | 14 + Example Code/WeatherList/index.css | 3 + Example Code/WeatherList/index.js | 54 + Example Code/fetchData.tsx | 11 + components/Footer/FooterLinks/index copy.js | 74 + components/Footer/FooterLinks/index.js | 68 + components/Footer/FooterLinks/package.json | 23 + .../Footer/FooterLinks/styles.module.css | 7 + components/Footer/index.tsx | 43 + components/Footer/package.json | 23 + components/Footer/styles.module.scss | 59 + components/Header/index.tsx | 108 ++ components/Header/package.json | 23 + components/Header/styles.module.css | 13 + components/Hero/index.tsx | 45 + components/Hero/package.json | 23 + components/Hero/styles.module.css | 0 components/SignIn/index.tsx | 132 ++ components/SignIn/package.json | 23 + components/SignIn/styles.module.css | 1 + lib/constants.ts | 28 + lib/linkList/infoLinks.js | 38 + lib/linkList/sectionLinks.js | 86 ++ package-lock.json | 1252 ++++++++++++++++- package.json | 21 +- 36 files changed, 2315 insertions(+), 54 deletions(-) create mode 100644 Example Code/BasicClassComponent/index.js create mode 100644 Example Code/BasicClassComponent/package.json create mode 100644 Example Code/BasicClassComponent/styles.module.css create mode 100644 Example Code/BasicFunctionComponent /index.js create mode 100644 Example Code/BasicFunctionComponent /package.json create mode 100644 Example Code/BasicFunctionComponent /styles.module.css create mode 100644 Example Code/Card/index.css create mode 100644 Example Code/Card/index.tsx create mode 100644 Example Code/CardList/index.css create mode 100644 Example Code/CardList/index.js create mode 100644 Example Code/Weather/index.js create mode 100644 Example Code/Weather/styles.module.css create mode 100644 Example Code/WeatherList/index.css create mode 100644 Example Code/WeatherList/index.js create mode 100644 Example Code/fetchData.tsx create mode 100644 components/Footer/FooterLinks/index copy.js create mode 100644 components/Footer/FooterLinks/index.js create mode 100644 components/Footer/FooterLinks/package.json create mode 100644 components/Footer/FooterLinks/styles.module.css create mode 100644 components/Footer/index.tsx create mode 100644 components/Footer/package.json create mode 100644 components/Footer/styles.module.scss create mode 100644 components/Header/index.tsx create mode 100644 components/Header/package.json create mode 100644 components/Header/styles.module.css create mode 100644 components/Hero/index.tsx create mode 100644 components/Hero/package.json create mode 100644 components/Hero/styles.module.css create mode 100644 components/SignIn/index.tsx create mode 100644 components/SignIn/package.json create mode 100644 components/SignIn/styles.module.css create mode 100644 lib/constants.ts create mode 100644 lib/linkList/infoLinks.js create mode 100644 lib/linkList/sectionLinks.js diff --git a/Example Code/BasicClassComponent/index.js b/Example Code/BasicClassComponent/index.js new file mode 100644 index 0000000..a5919ec --- /dev/null +++ b/Example Code/BasicClassComponent/index.js @@ -0,0 +1,25 @@ +import React, { Component } from 'react' +import PropTypes from 'prop-types' //ES6 +import styles from './styles.module.css' + +export default class BasicClassComponent extends Component { + constructor(props){ + super(props) + this.state = { + + } + } + + render(){ + return ( +
+

Basic Component

+
+ ) + } +} + +BasicClassComponent.propTypes = { + +}; + diff --git a/Example Code/BasicClassComponent/package.json b/Example Code/BasicClassComponent/package.json new file mode 100644 index 0000000..d4532c2 --- /dev/null +++ b/Example Code/BasicClassComponent/package.json @@ -0,0 +1,23 @@ +{ + "name": "basicclasscomponent", + "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/" + } + ] +} \ No newline at end of file diff --git a/Example Code/BasicClassComponent/styles.module.css b/Example Code/BasicClassComponent/styles.module.css new file mode 100644 index 0000000..e69de29 diff --git a/Example Code/BasicFunctionComponent /index.js b/Example Code/BasicFunctionComponent /index.js new file mode 100644 index 0000000..1acecbe --- /dev/null +++ b/Example Code/BasicFunctionComponent /index.js @@ -0,0 +1,10 @@ +import styles from './styles.module.css' + +export const BasicFunctionComponent = () => { + return ( +
+ +
+ ) +} +export default BasicFunctionComponent; \ No newline at end of file diff --git a/Example Code/BasicFunctionComponent /package.json b/Example Code/BasicFunctionComponent /package.json new file mode 100644 index 0000000..08cfb4b --- /dev/null +++ b/Example Code/BasicFunctionComponent /package.json @@ -0,0 +1,23 @@ +{ + "name": "basicfunctioncomponent", + "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/" + } + ] +} \ No newline at end of file diff --git a/Example Code/BasicFunctionComponent /styles.module.css b/Example Code/BasicFunctionComponent /styles.module.css new file mode 100644 index 0000000..e69de29 diff --git a/Example Code/Card/index.css b/Example Code/Card/index.css new file mode 100644 index 0000000..d136520 --- /dev/null +++ b/Example Code/Card/index.css @@ -0,0 +1,14 @@ +.card { + box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2); + max-width: 80%; + margin: auto; + text-align: center; + padding: 1em; + } + + .close { + font-size: 1.5em; + float: right; + cursor: pointer; + } + \ No newline at end of file diff --git a/Example Code/Card/index.tsx b/Example Code/Card/index.tsx new file mode 100644 index 0000000..4d3d86c --- /dev/null +++ b/Example Code/Card/index.tsx @@ -0,0 +1,23 @@ +import React from "react"; +import "./index.css"; +class Card extends React.Component { + +constructor( props ) { + super(props) + this.state = { show : true }; +} + +render() { + return ( +
+ × +

{this.props.title}

+

{this.props.content}

+
+ ); + } + +} +export default Card; diff --git a/Example Code/CardList/index.css b/Example Code/CardList/index.css new file mode 100644 index 0000000..9b86c6a --- /dev/null +++ b/Example Code/CardList/index.css @@ -0,0 +1,3 @@ +.cardList { + + } \ No newline at end of file diff --git a/Example Code/CardList/index.js b/Example Code/CardList/index.js new file mode 100644 index 0000000..dd0849e --- /dev/null +++ b/Example Code/CardList/index.js @@ -0,0 +1,38 @@ +import React from "react"; +import ReactDOM from "react-dom"; +import Card from "../Card/"; +import data from "../../data.json"; + +class CardList extends React.Component { + + constructor(props) { + super(props); + this.state = { cards: data.cards }; + } + + remove() { + + } + render() { + return ( +
+ { + this.state.cards.map((card, index) => { + return + }) + + }); + } + +
+ ); + } + +} +export default CardList; + diff --git a/Example Code/Weather/index.js b/Example Code/Weather/index.js new file mode 100644 index 0000000..ba5a3cf --- /dev/null +++ b/Example Code/Weather/index.js @@ -0,0 +1,38 @@ +import React from "react"; +import styles from "./styles.module.css"; +class Weather extends React.Component { + constructor(props) { + super(props); + this.state = { + show: true, + + }; + this.props = { + name : '', + temperature : '', + temperatureUnit : '', + detailedForecast : '', + } + } + + render() { + return ( +
+ × + + +

{this.props.name}

+

{this.props.temperature}

+

{this.props.temperatureUnit}

+

{this.props.detailedForecast}

+
+ ); + } + +} + +export default Weather; \ No newline at end of file diff --git a/Example Code/Weather/styles.module.css b/Example Code/Weather/styles.module.css new file mode 100644 index 0000000..d136520 --- /dev/null +++ b/Example Code/Weather/styles.module.css @@ -0,0 +1,14 @@ +.card { + box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2); + max-width: 80%; + margin: auto; + text-align: center; + padding: 1em; + } + + .close { + font-size: 1.5em; + float: right; + cursor: pointer; + } + \ No newline at end of file diff --git a/Example Code/WeatherList/index.css b/Example Code/WeatherList/index.css new file mode 100644 index 0000000..9b86c6a --- /dev/null +++ b/Example Code/WeatherList/index.css @@ -0,0 +1,3 @@ +.cardList { + + } \ No newline at end of file diff --git a/Example Code/WeatherList/index.js b/Example Code/WeatherList/index.js new file mode 100644 index 0000000..9a2e69b --- /dev/null +++ b/Example Code/WeatherList/index.js @@ -0,0 +1,54 @@ +import React from "react"; +import ReactDOM from "react-dom"; +import Weather from "../Weather"; + +class WeatherList extends React.Component { + + constructor(props) { + super(props); + this.state = { periods: [] }; + } + + remove() { + + } + render() { + return ( +
+ { + this.state.periods.map((period, index) => { + return + }) + + }); + } + +
+ ); + } + getData() { + fetch("https://api.weather.gov/gridpoints/MLB/25,69/forecast") + .then(response => response.json()) + .then(data => this.setState({ periods : data.properties.periods})) + .then(data => console.log(data)); + this.setState({ + detailedForcast : 'Test Detailed forcast', + name : 'Test data', + temperature : '90', + temperatureUnit : 'Celcius'}); + + } + + componentDidMount() { + this.getData(); + } + +} +export default WeatherList; \ No newline at end of file diff --git a/Example Code/fetchData.tsx b/Example Code/fetchData.tsx new file mode 100644 index 0000000..10671f4 --- /dev/null +++ b/Example Code/fetchData.tsx @@ -0,0 +1,11 @@ +export default async function Page() { + let data = await fetch('https://api.vercel.app/blog') + let posts = await data.json() + return ( + + ) + } \ No newline at end of file diff --git a/components/Footer/FooterLinks/index copy.js b/components/Footer/FooterLinks/index copy.js new file mode 100644 index 0000000..0b3be57 --- /dev/null +++ b/components/Footer/FooterLinks/index copy.js @@ -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 ( +
+ + + + + + FAQ + + + + + + Terms Of Service + + + + + + Contact Us + + + + + + Privacy Policy + + + + + + Personal Information Policy + + + + + + Disclosure + + + + + + +
+ ) + } + diff --git a/components/Footer/FooterLinks/index.js b/components/Footer/FooterLinks/index.js new file mode 100644 index 0000000..19aadf3 --- /dev/null +++ b/components/Footer/FooterLinks/index.js @@ -0,0 +1,68 @@ +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 '@/fragments/FooterLink'; + +// SS - IDK what this is. It feels hacky.. +// DS - Because it is hacky, its stupid javascript magic +// const useStyles = theme => ({ //const makes a constant, => defines a function, +// so it looks like useStyles will end up beign a function that is actually the theme function +// the useStyles function will have properties in root, so useStyles.root +// root: { +// width: '75%', +// maxWidth: 260, +// /* backgroundColor: theme.palette.background.paper, */ +// float: 'right', +// marginRight: '2%', +// fontSize: '.80em' +// }, +// }); +// } + +class FooterLinks extends React.Component { + constructor(props) { + super(props) + this.state = { + } + } + + render() { + const { classes } = this.props; + return ( + +
+ + + + + + + + + + + +
+
+ ) + } +} + +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; \ No newline at end of file diff --git a/components/Footer/FooterLinks/package.json b/components/Footer/FooterLinks/package.json new file mode 100644 index 0000000..3448443 --- /dev/null +++ b/components/Footer/FooterLinks/package.json @@ -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/" + } + ] +} \ No newline at end of file diff --git a/components/Footer/FooterLinks/styles.module.css b/components/Footer/FooterLinks/styles.module.css new file mode 100644 index 0000000..5d56616 --- /dev/null +++ b/components/Footer/FooterLinks/styles.module.css @@ -0,0 +1,7 @@ +.navLinks { + color:#000; +} +.navLinks:hover { + font-weight: bold; + text-decoration : none; +} \ No newline at end of file diff --git a/components/Footer/index.tsx b/components/Footer/index.tsx new file mode 100644 index 0000000..aa5b340 --- /dev/null +++ b/components/Footer/index.tsx @@ -0,0 +1,43 @@ +import React, { Component } from "react"; +import PropTypes from "prop-types"; +import styles from './styles.module.scss'; +import Copyright from "@/components/Info/Copyright"; +import FooterLinks from "./FooterLinks"; +import Link from "next/link"; +import { infoLinks } from "@/lib/linkList/infoLinks"; +import { sectionLinks } from "@/lib/linkList/sectionLinks"; +import Armory from '@/fragments/Armory'; +import GroundZero from "@/fragments/GroundZero"; +import Information from "@/fragments/Information"; +export const Footer = () => { + + return ( + //
+ // + // + //
+ <> + + + + ); +} + + +Footer.propTypes = {}; + +export default Footer; \ No newline at end of file diff --git a/components/Footer/package.json b/components/Footer/package.json new file mode 100644 index 0000000..21a0326 --- /dev/null +++ b/components/Footer/package.json @@ -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/" + } + ] +} \ No newline at end of file diff --git a/components/Footer/styles.module.scss b/components/Footer/styles.module.scss new file mode 100644 index 0000000..4ba7c1a --- /dev/null +++ b/components/Footer/styles.module.scss @@ -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; + } +} diff --git a/components/Header/index.tsx b/components/Header/index.tsx new file mode 100644 index 0000000..cac982a --- /dev/null +++ b/components/Header/index.tsx @@ -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 '@/lib/linkList/infoLinks'; +import sectionLinks from '@/lib/linkList/sectionLinks'; + +export default class Header extends Component { + constructor(props) { + super(props) + this.state = { + } + } + + render() { + return ( +
+
+ Gun Builder + +
+ + + + + + + {sectionLinks.UPPERS.TEXT} + + + + {sectionLinks.PARTSLIST.TEXT} + + + + {sectionLinks.BUILDS.TEXT} + + + + {sectionLinks.BLOG.TEXT} + + + {/* + Admin + */} + + + + + + + +
+ ) + } +} + + +Header.propTypes = { + +}; diff --git a/components/Header/package.json b/components/Header/package.json new file mode 100644 index 0000000..59ca336 --- /dev/null +++ b/components/Header/package.json @@ -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/" + } + ] +} \ No newline at end of file diff --git a/components/Header/styles.module.css b/components/Header/styles.module.css new file mode 100644 index 0000000..31d426f --- /dev/null +++ b/components/Header/styles.module.css @@ -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; +} \ No newline at end of file diff --git a/components/Hero/index.tsx b/components/Hero/index.tsx new file mode 100644 index 0000000..1d87420 --- /dev/null +++ b/components/Hero/index.tsx @@ -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 ( + +
+
+

{this.props.heading}

+

{this.props.subheading}

+ +
+ + +
+ ); + } + +} + diff --git a/components/Hero/package.json b/components/Hero/package.json new file mode 100644 index 0000000..aae57f5 --- /dev/null +++ b/components/Hero/package.json @@ -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/" + } + ] +} \ No newline at end of file diff --git a/components/Hero/styles.module.css b/components/Hero/styles.module.css new file mode 100644 index 0000000..e69de29 diff --git a/components/SignIn/index.tsx b/components/SignIn/index.tsx new file mode 100644 index 0000000..ea40f94 --- /dev/null +++ b/components/SignIn/index.tsx @@ -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 ( + + {'Copyright © '} + + Your Website + {' '} + {new Date().getFullYear()} + {'.'} + + ); +} + +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 ( + + + + +
+ + + + + Sign in + +
+ + + } + label="Remember me" + /> + + + + + Forgot password? + + + + + {"Don't have an account? Sign Up"} + + + + + + + +
+
+
+ ); +} \ No newline at end of file diff --git a/components/SignIn/package.json b/components/SignIn/package.json new file mode 100644 index 0000000..a84a5b4 --- /dev/null +++ b/components/SignIn/package.json @@ -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/" + } + ] +} \ No newline at end of file diff --git a/components/SignIn/styles.module.css b/components/SignIn/styles.module.css new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/components/SignIn/styles.module.css @@ -0,0 +1 @@ + diff --git a/lib/constants.ts b/lib/constants.ts new file mode 100644 index 0000000..999a6d9 --- /dev/null +++ b/lib/constants.ts @@ -0,0 +1,28 @@ +export const APP_NAME = "The Gun Bag - Gun Builder"; +export const COMPANY_NAME = "DarkShark Technologies, LLC"; +export const COMPANY_URL = "https://goforward.group"; +export const AUTHOR = "DarkShark Technologies, LLC"; +export const META_KEYWORDS = "Pew Pew"; +export const META_DESCRIPTION = "Pow Pow"; +export default { + APP_NAME: 'The Gun Bag - Gun Builder', + SITE_NAME: 'Gun Builder', + COMPANY_NAME: 'DarkShark Technologies, LLC', + COMPANY_URL: 'https://goforward.group', + AUTHOR: 'DarkShark Technologies, LLC', + META_KEYWORDS: 'Pew Pew', + META_DESCRIPTION: 'Pow Pow', + PJAM_RAINIER: 'https://api.pepperjamnetwork.com/20120402/publisher/creative/product?apiKey=17c11367569cc10dce51e6a5900d0c7c8b390c9cb2d2cecc25b3ed53a3b8649b&format=json&programIds=8713', + PJAM_BARRETTA: 'https://api.pepperjamnetwork.com/20120402/publisher/creative/product?apiKey=17c11367569cc10dce51e6a5900d0c7c8b390c9cb2d2cecc25b3ed53a3b8649b&format=json&programIds=8342' +} + + +export enum SITE_CONT_TYPE { + CONTACTUS = "CONTACTUS", + PRIVACYPOLICY = "PP", + PERSONALINFOPOLICY = "PIP", + FAQ = "FAQ", + TERMSOFSERVICE = "TOS", + ABOUTUS="ABOUTUS", + DISCLOSURE="DISCLOSURE" +} \ No newline at end of file diff --git a/lib/linkList/infoLinks.js b/lib/linkList/infoLinks.js new file mode 100644 index 0000000..bb5913b --- /dev/null +++ b/lib/linkList/infoLinks.js @@ -0,0 +1,38 @@ +export const infoLinks = { + ABOUT: { + URL: "/info/about", + TEXT: "About Us", + TIP: "About Us" + }, + TOS: { + URL: "/info/tos", + TEXT: "Terms Of Service", + TIP: "Terms Of Service" + }, + PRIVACYPOLICY: { + URL: "/info/privacypolicy", + TEXT: "Privacy Policy", + TIP: "Privacy Policy" + }, + FAQ: { + URL: "/info/faq", + TEXT: "FAQ", + TIP: "FAQ" + }, + DISCLOSURE: { + URL: "/info/disclosure", + TEXT: "Disclosure", + TIP: "Disclosure", + }, + PIP: { + URL: "/info/pip", + TEXT: "Personal Information Policy", + TIP: "Personal Information Policy" + }, + CONTACTUS: { + URL: "/info/contactus", + TEXT: "Contact Us", + TIP: "Contact Us" + } +}; +export default infoLinks; \ No newline at end of file diff --git a/lib/linkList/sectionLinks.js b/lib/linkList/sectionLinks.js new file mode 100644 index 0000000..1842770 --- /dev/null +++ b/lib/linkList/sectionLinks.js @@ -0,0 +1,86 @@ +export const sectionLinks = { + UPPERS: { + URL: "/products/rifleuppers", + TEXT: "Rifle Uppers", + TIP: "Rifle Uppers" + }, + LOWERS: { + URL: "/products/lowers", + TEXT: "Lowers", + TIP: "Lowers" + }, + PARTSLIST: { + URL: "/products/partslist", + TEXT: "Parts List", + TIP: "Parts List" + }, + OPTICS: { + URL: "/products/optics", + TEXT: "Optics", + TIP: "Optics" + }, + BARRELS: { + URL: "/products/barrels", + TEXT: "Barrels", + TIP: "Barrels" + }, + ACCESSORIES: { + URL: "/products/accessories", + TEXT: "Accessories", + TIP: "Accessories" + }, + BUILDGUIDES: { + URL: "/knowledge/guides", + TEXT: "Guides", + TIP: "Guides", + }, + BLOG: { + URL: "/blog", + TEXT: "Blog", + TIP: "Blog" + }, + PRICEDROPS: { + URL: "/knowledge/pricedrops", + TEXT: "Price Drops", + TIP: "Price Drops" + }, + BUILDS: { + URL: "/builds", + TEXT: "Builds", + TIP: "Builds" + } +}; + +export const armoryLinks = [ + {UPPERS: { + URL: "/products/rifleuppers", + TEXT: "Rifle Uppers", + TIP: "Rifle Uppers" + }}, + {LOWERS: { + URL: "/products/lowers", + TEXT: "Lowers", + TIP: "Lowers" + }}, + {PARTSLIST: { + URL: "/products/partslist", + TEXT: "Parts List", + TIP: "Parts List" + }}, + {OPTICS: { + URL: "/products/optics", + TEXT: "Optics", + TIP: "Optics" + }}, + {BARRELS: { + URL: "/products/barrels", + TEXT: "Barrels", + TIP: "Barrels" + }}, + {ACCESSORIES: { + URL: "/products/accessories", + TEXT: "Accessories", + TIP: "Accessories" + }}]; + +export default sectionLinks; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 26fcde7..88eb282 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,9 +8,18 @@ "name": "balistics-builder", "version": "0.1.0", "dependencies": { + "@emotion/react": "^11.13.3", + "@emotion/styled": "^11.13.0", + "@mui/icons-material": "^6.1.7", + "@mui/joy": "^5.0.0-beta.48", + "@mui/material": "^6.1.7", + "@mui/styles": "^6.1.7", + "@mui/system": "^6.1.7", + "@mui/x-data-grid": "^7.22.2", + "fontsource-roboto": "^4.0.0", "next": "15.0.3", - "react": "19.0.0-rc-66855b96-20241106", - "react-dom": "19.0.0-rc-66855b96-20241106" + "react": "18.2.0", + "react-dom": "18.2.0" }, "devDependencies": { "@types/node": "^20", @@ -35,6 +44,137 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@babel/code-frame": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz", + "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==", + "dependencies": { + "@babel/parser": "^7.26.2", + "@babel/types": "^7.26.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz", + "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==", + "dependencies": { + "@babel/types": "^7.26.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + "dependencies": { + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz", + "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==", + "dependencies": { + "@babel/code-frame": "^7.25.9", + "@babel/generator": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/template": "^7.25.9", + "@babel/types": "^7.25.9", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", + "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@emnapi/runtime": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz", @@ -44,6 +184,139 @@ "tslib": "^2.4.0" } }, + "node_modules/@emotion/babel-plugin": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz", + "integrity": "sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/serialize": "^1.2.0", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/cache": { + "version": "11.13.1", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.13.1.tgz", + "integrity": "sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw==", + "dependencies": { + "@emotion/memoize": "^0.9.0", + "@emotion/sheet": "^1.4.0", + "@emotion/utils": "^1.4.0", + "@emotion/weak-memoize": "^0.4.0", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/hash": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", + "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==" + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz", + "integrity": "sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==", + "dependencies": { + "@emotion/memoize": "^0.9.0" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", + "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==" + }, + "node_modules/@emotion/react": { + "version": "11.13.3", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.13.3.tgz", + "integrity": "sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.12.0", + "@emotion/cache": "^11.13.0", + "@emotion/serialize": "^1.3.1", + "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", + "@emotion/utils": "^1.4.0", + "@emotion/weak-memoize": "^0.4.0", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.2.tgz", + "integrity": "sha512-grVnMvVPK9yUVE6rkKfAJlYZgo0cu3l9iMC77V7DW6E1DUIrU68pSEXRmFZFOFB1QFo57TncmOcvcbMDWsL4yA==", + "dependencies": { + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/unitless": "^0.10.0", + "@emotion/utils": "^1.4.1", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/sheet": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz", + "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==" + }, + "node_modules/@emotion/styled": { + "version": "11.13.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.13.0.tgz", + "integrity": "sha512-tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.12.0", + "@emotion/is-prop-valid": "^1.3.0", + "@emotion/serialize": "^1.3.0", + "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", + "@emotion/utils": "^1.4.0" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/unitless": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz", + "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==" + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz", + "integrity": "sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.1.tgz", + "integrity": "sha512-BymCXzCG3r72VKJxaYVwOXATqXIZ85cuvg0YOUDxMGNrKc1DJRZk8MgV5wyXRyEayIMd4FuXJIUgTBXvDNW5cA==" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", + "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==" + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", @@ -103,6 +376,40 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@floating-ui/core": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.8.tgz", + "integrity": "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==", + "dependencies": { + "@floating-ui/utils": "^0.2.8" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.12", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.12.tgz", + "integrity": "sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==", + "dependencies": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.8" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", + "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz", + "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==" + }, "node_modules/@humanwhocodes/config-array": { "version": "0.13.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", @@ -528,7 +835,6 @@ "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -542,7 +848,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -551,7 +856,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -559,19 +863,588 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@mui/base": { + "version": "5.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.40.tgz", + "integrity": "sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@floating-ui/react-dom": "^2.0.8", + "@mui/types": "^7.2.14", + "@mui/utils": "^5.15.14", + "@popperjs/core": "^2.11.8", + "clsx": "^2.1.0", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/base/node_modules/@mui/utils": { + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.16.6.tgz", + "integrity": "sha512-tWiQqlhxAt3KENNiSRL+DIn9H5xNVK6Jjf70x3PnfQPz1MPBdh7yyIcAyVBT9xiw7hP3SomRhPR7hzBMBCjqEA==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/types": "^7.2.15", + "@types/prop-types": "^15.7.12", + "clsx": "^2.1.1", + "prop-types": "^15.8.1", + "react-is": "^18.3.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/base/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + }, + "node_modules/@mui/core-downloads-tracker": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.1.7.tgz", + "integrity": "sha512-POuIBi80BZBogQkG4PQKIGwy4QFwB+kOr+OI4k7Znh7LqMAIhwB9OC00l6M+w1GrZJYj3T8R5WX8G6QAIvoVEw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + } + }, + "node_modules/@mui/icons-material": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.1.7.tgz", + "integrity": "sha512-RGzkeHNArIVy5ZQ12bq/8VYNeICEyngngsFskTJ/2hYKhIeIII3iRGtaZaSvLpXh7h3Fg3VKTulT+QU0w5K4XQ==", + "dependencies": { + "@babel/runtime": "^7.26.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@mui/material": "^6.1.7", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/joy": { + "version": "5.0.0-beta.48", + "resolved": "https://registry.npmjs.org/@mui/joy/-/joy-5.0.0-beta.48.tgz", + "integrity": "sha512-OhTvjuGl9I5IvpBr0BQyDehIW/xb2yteW6YglHJMdOb/279nItn76X1NBtPV9ImldNlBjReGwvpOXmBTTGER9w==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/base": "5.0.0-beta.40", + "@mui/core-downloads-tracker": "^5.16.1", + "@mui/system": "^5.16.1", + "@mui/types": "^7.2.15", + "@mui/utils": "^5.16.1", + "clsx": "^2.1.0", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/joy/node_modules/@mui/core-downloads-tracker": { + "version": "5.16.7", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.16.7.tgz", + "integrity": "sha512-RtsCt4Geed2/v74sbihWzzRs+HsIQCfclHeORh5Ynu2fS4icIKozcSubwuG7vtzq2uW3fOR1zITSP84TNt2GoQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + } + }, + "node_modules/@mui/joy/node_modules/@mui/private-theming": { + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.16.6.tgz", + "integrity": "sha512-rAk+Rh8Clg7Cd7shZhyt2HGTTE5wYKNSJ5sspf28Fqm/PZ69Er9o6KX25g03/FG2dfpg5GCwZh/xOojiTfm3hw==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/utils": "^5.16.6", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/joy/node_modules/@mui/styled-engine": { + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.16.6.tgz", + "integrity": "sha512-zaThmS67ZmtHSWToTiHslbI8jwrmITcN93LQaR2lKArbvS7Z3iLkwRoiikNWutx9MBs8Q6okKvbZq1RQYB3v7g==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@emotion/cache": "^11.11.0", + "csstype": "^3.1.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, + "node_modules/@mui/joy/node_modules/@mui/system": { + "version": "5.16.7", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.16.7.tgz", + "integrity": "sha512-Jncvs/r/d/itkxh7O7opOunTqbbSSzMTHzZkNLM+FjAOg+cYAZHrPDlYe1ZGKUYORwwb2XexlWnpZp0kZ4AHuA==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/private-theming": "^5.16.6", + "@mui/styled-engine": "^5.16.6", + "@mui/types": "^7.2.15", + "@mui/utils": "^5.16.6", + "clsx": "^2.1.0", + "csstype": "^3.1.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/joy/node_modules/@mui/utils": { + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.16.6.tgz", + "integrity": "sha512-tWiQqlhxAt3KENNiSRL+DIn9H5xNVK6Jjf70x3PnfQPz1MPBdh7yyIcAyVBT9xiw7hP3SomRhPR7hzBMBCjqEA==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/types": "^7.2.15", + "@types/prop-types": "^15.7.12", + "clsx": "^2.1.1", + "prop-types": "^15.8.1", + "react-is": "^18.3.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/joy/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + }, + "node_modules/@mui/material": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.1.7.tgz", + "integrity": "sha512-KsjujQL/A2hLd1PV3QboF+W6SSL5QqH6ZlSuQoeYz9r69+TnyBFIevbYLxdjJcJmGBjigL5pfpn7hTGop+vhSg==", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@mui/core-downloads-tracker": "^6.1.7", + "@mui/system": "^6.1.7", + "@mui/types": "^7.2.19", + "@mui/utils": "^6.1.7", + "@popperjs/core": "^2.11.8", + "@types/react-transition-group": "^4.4.11", + "clsx": "^2.1.1", + "csstype": "^3.1.3", + "prop-types": "^15.8.1", + "react-is": "^18.3.1", + "react-transition-group": "^4.4.5" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@mui/material-pigment-css": "^6.1.7", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@mui/material-pigment-css": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/material/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + }, + "node_modules/@mui/private-theming": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.1.7.tgz", + "integrity": "sha512-uLbfUSsug5K0LVkv0PI6Flste3le8+6WSL2omdTiYde93P89Qr7pKr8TA6d2yXfr+Bm+SvD8/fGnkaRwFkryuQ==", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@mui/utils": "^6.1.7", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/styled-engine": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.1.7.tgz", + "integrity": "sha512-Ou4CxN7MQmwrfG1Pu6EYjPgPChQXxPDJrwgizLXlRPOad5qAq4gYXRuzrGQ2DfGjjwmJhjI8T6A0SeapAZPGig==", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@emotion/cache": "^11.13.1", + "@emotion/serialize": "^1.3.2", + "@emotion/sheet": "^1.4.0", + "csstype": "^3.1.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, + "node_modules/@mui/styles": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/@mui/styles/-/styles-6.1.7.tgz", + "integrity": "sha512-AKMkjKDFjJ9NTNLtY8DcUfPYYNgS/2G3nV6NPCQbptgKdeDY4dmAJ8nJE+Le+ivjUJ5nMjgetoFsCBxomk8r3Q==", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@emotion/hash": "^0.9.2", + "@mui/private-theming": "^6.1.7", + "@mui/types": "^7.2.19", + "@mui/utils": "^6.1.7", + "clsx": "^2.1.1", + "csstype": "^3.1.3", + "hoist-non-react-statics": "^3.3.2", + "jss": "^10.10.0", + "jss-plugin-camel-case": "^10.10.0", + "jss-plugin-default-unit": "^10.10.0", + "jss-plugin-global": "^10.10.0", + "jss-plugin-nested": "^10.10.0", + "jss-plugin-props-sort": "^10.10.0", + "jss-plugin-rule-value-function": "^10.10.0", + "jss-plugin-vendor-prefixer": "^10.10.0", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/system": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.1.7.tgz", + "integrity": "sha512-qbMGgcC/FodpuRSfjXlEDdbNQaW++eATh0vNBcPUv2/YXSpReoOpoT9FhogxEBNks+aQViDXBRZKh6HX2fVmwg==", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@mui/private-theming": "^6.1.7", + "@mui/styled-engine": "^6.1.7", + "@mui/types": "^7.2.19", + "@mui/utils": "^6.1.7", + "clsx": "^2.1.1", + "csstype": "^3.1.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/types": { + "version": "7.2.19", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.19.tgz", + "integrity": "sha512-6XpZEM/Q3epK9RN8ENoXuygnqUQxE+siN/6rGRi2iwJPgBUR25mphYQ9ZI87plGh58YoZ5pp40bFvKYOCDJ3tA==", + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.1.7.tgz", + "integrity": "sha512-Gr7cRZxBoZ0BIa3Xqf/2YaUrBLyNPJvXPQH3OsD9WMZukI/TutibbQBVqLYpgqJn8pKSjbD50Yq2auG0wI1xOw==", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@mui/types": "^7.2.19", + "@types/prop-types": "^15.7.13", + "clsx": "^2.1.1", + "prop-types": "^15.8.1", + "react-is": "^18.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + }, + "node_modules/@mui/x-data-grid": { + "version": "7.22.2", + "resolved": "https://registry.npmjs.org/@mui/x-data-grid/-/x-data-grid-7.22.2.tgz", + "integrity": "sha512-yfy2s5A6tbajQZiEdsba49T4FYb9F0WPrzbbG30dl1+sIiX4ZRX7ma44UIDGPZrsZv8xkkE+p8qeJxZ7OaMteA==", + "dependencies": { + "@babel/runtime": "^7.25.7", + "@mui/utils": "^5.16.6 || ^6.0.0", + "@mui/x-internals": "7.21.0", + "clsx": "^2.1.1", + "prop-types": "^15.8.1", + "reselect": "^5.1.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.9.0", + "@emotion/styled": "^11.8.1", + "@mui/material": "^5.15.14 || ^6.0.0", + "@mui/system": "^5.15.14 || ^6.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, + "node_modules/@mui/x-internals": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@mui/x-internals/-/x-internals-7.21.0.tgz", + "integrity": "sha512-94YNyZ0BhK5Z+Tkr90RKf47IVCW8R/1MvdUhh6MCQg6sZa74jsX+x+gEZ4kzuCqOsuyTyxikeQ8vVuCIQiP7UQ==", + "dependencies": { + "@babel/runtime": "^7.25.7", + "@mui/utils": "^5.16.6 || ^6.0.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" + } + }, "node_modules/@next/env": { "version": "15.0.3", "resolved": "https://registry.npmjs.org/@next/env/-/env-15.0.3.tgz", @@ -760,6 +1633,15 @@ "node": ">=14" } }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, "node_modules/@rtsao/scc": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", @@ -800,17 +1682,20 @@ "undici-types": "~6.19.2" } }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==" + }, "node_modules/@types/prop-types": { "version": "15.7.13", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz", - "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==", - "dev": true + "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==" }, "node_modules/@types/react": { "version": "18.3.12", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz", "integrity": "sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==", - "dev": true, "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -825,6 +1710,14 @@ "@types/react": "*" } }, + "node_modules/@types/react-transition-group": { + "version": "4.4.11", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.11.tgz", + "integrity": "sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==", + "dependencies": { + "@types/react": "*" + } + }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "8.14.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.14.0.tgz", @@ -1355,6 +2248,20 @@ "node": ">= 0.4" } }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1429,7 +2336,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, "engines": { "node": ">=6" } @@ -1519,6 +2425,14 @@ "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "engines": { + "node": ">=6" + } + }, "node_modules/color": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", @@ -1575,6 +2489,34 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cosmiconfig/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } + }, "node_modules/cross-spawn": { "version": "7.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.5.tgz", @@ -1589,6 +2531,15 @@ "node": ">= 8" } }, + "node_modules/css-vendor": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz", + "integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==", + "dependencies": { + "@babel/runtime": "^7.8.3", + "is-in-browser": "^1.0.2" + } + }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", @@ -1604,8 +2555,7 @@ "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, "node_modules/damerau-levenshtein": { "version": "1.0.8", @@ -1668,7 +2618,6 @@ "version": "4.3.7", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "dev": true, "dependencies": { "ms": "^2.1.3" }, @@ -1754,6 +2703,15 @@ "node": ">=6.0.0" } }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -1779,6 +2737,19 @@ "node": ">=10.13.0" } }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-ex/node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, "node_modules/es-abstract": { "version": "1.23.4", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.4.tgz", @@ -1942,7 +2913,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, "engines": { "node": ">=10" }, @@ -2482,6 +3452,11 @@ "node": ">=8" } }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -2518,6 +3493,12 @@ "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true }, + "node_modules/fontsource-roboto": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fontsource-roboto/-/fontsource-roboto-4.0.0.tgz", + "integrity": "sha512-zD6L8nvdWRcwSgp4ojxFchG+MPj8kXXQKDEAH9bfhbxy+lkpvpC1WgAK0lCa4dwobv+hvAe0uyHaawcgH7WH/g==", + "deprecated": "Package relocated. Please install and migrate to @fontsource/roboto." + }, "node_modules/for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -2567,7 +3548,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -2808,7 +3788,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, "dependencies": { "function-bind": "^1.1.2" }, @@ -2816,6 +3795,19 @@ "node": ">= 0.4" } }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hyphenate-style-name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz", + "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==" + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -2829,7 +3821,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -2983,7 +3974,6 @@ "version": "2.15.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", - "dev": true, "dependencies": { "hasown": "^2.0.2" }, @@ -3081,6 +4071,11 @@ "node": ">=0.10.0" } }, + "node_modules/is-in-browser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", + "integrity": "sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==" + }, "node_modules/is-map": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", @@ -3321,8 +4316,7 @@ "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { "version": "4.1.0", @@ -3336,12 +4330,28 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -3366,6 +4376,88 @@ "json5": "lib/cli.js" } }, + "node_modules/jss": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss/-/jss-10.10.0.tgz", + "integrity": "sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==", + "dependencies": { + "@babel/runtime": "^7.3.1", + "csstype": "^3.0.2", + "is-in-browser": "^1.1.3", + "tiny-warning": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/jss" + } + }, + "node_modules/jss-plugin-camel-case": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.10.0.tgz", + "integrity": "sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==", + "dependencies": { + "@babel/runtime": "^7.3.1", + "hyphenate-style-name": "^1.0.3", + "jss": "10.10.0" + } + }, + "node_modules/jss-plugin-default-unit": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.10.0.tgz", + "integrity": "sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==", + "dependencies": { + "@babel/runtime": "^7.3.1", + "jss": "10.10.0" + } + }, + "node_modules/jss-plugin-global": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.10.0.tgz", + "integrity": "sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==", + "dependencies": { + "@babel/runtime": "^7.3.1", + "jss": "10.10.0" + } + }, + "node_modules/jss-plugin-nested": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.10.0.tgz", + "integrity": "sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==", + "dependencies": { + "@babel/runtime": "^7.3.1", + "jss": "10.10.0", + "tiny-warning": "^1.0.2" + } + }, + "node_modules/jss-plugin-props-sort": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.10.0.tgz", + "integrity": "sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==", + "dependencies": { + "@babel/runtime": "^7.3.1", + "jss": "10.10.0" + } + }, + "node_modules/jss-plugin-rule-value-function": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.10.0.tgz", + "integrity": "sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==", + "dependencies": { + "@babel/runtime": "^7.3.1", + "jss": "10.10.0", + "tiny-warning": "^1.0.2" + } + }, + "node_modules/jss-plugin-vendor-prefixer": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.10.0.tgz", + "integrity": "sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==", + "dependencies": { + "@babel/runtime": "^7.3.1", + "css-vendor": "^2.0.8", + "jss": "10.10.0" + } + }, "node_modules/jsx-ast-utils": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", @@ -3433,8 +4525,7 @@ "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, "node_modules/locate-path": { "version": "6.0.0", @@ -3461,7 +4552,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -3530,8 +4620,7 @@ "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/mz": { "version": "2.7.0", @@ -3660,7 +4749,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -3842,7 +4930,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, "dependencies": { "callsites": "^3.0.0" }, @@ -3850,6 +4937,23 @@ "node": ">=6" } }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -3880,8 +4984,7 @@ "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-scurry": { "version": "1.11.1", @@ -3899,6 +5002,14 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -4111,7 +5222,6 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -4148,29 +5258,47 @@ ] }, "node_modules/react": { - "version": "19.0.0-rc-66855b96-20241106", - "resolved": "https://registry.npmjs.org/react/-/react-19.0.0-rc-66855b96-20241106.tgz", - "integrity": "sha512-klH7xkT71SxRCx4hb1hly5FJB21Hz0ACyxbXYAECEqssUjtJeFUAaI2U1DgJAzkGEnvEm3DkxuBchMC/9K4ipg==", + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, "engines": { "node": ">=0.10.0" } }, "node_modules/react-dom": { - "version": "19.0.0-rc-66855b96-20241106", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.0.0-rc-66855b96-20241106.tgz", - "integrity": "sha512-D25vdaytZ1wFIRiwNU98NPQ/upS2P8Co4/oNoa02PzHbh8deWdepjm5qwZM/46OdSiGv4WSWwxP55RO9obqJEQ==", + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", "dependencies": { - "scheduler": "0.25.0-rc-66855b96-20241106" + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" }, "peerDependencies": { - "react": "19.0.0-rc-66855b96-20241106" + "react": "^18.2.0" } }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } }, "node_modules/read-cache": { "version": "1.0.0", @@ -4214,6 +5342,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, "node_modules/regexp.prototype.flags": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", @@ -4232,11 +5365,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/reselect": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz", + "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==" + }, "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -4253,7 +5390,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, "engines": { "node": ">=4" } @@ -4352,9 +5488,12 @@ } }, "node_modules/scheduler": { - "version": "0.25.0-rc-66855b96-20241106", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0-rc-66855b96-20241106.tgz", - "integrity": "sha512-HQXp/Mnp/MMRSXMQF7urNFla+gmtXW/Gr1KliuR0iboTit4KvZRY8KYaq5ccCTAOJiUqQh2rE2F3wgUekmgdlA==" + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dependencies": { + "loose-envify": "^1.1.0" + } }, "node_modules/semver": { "version": "7.6.3", @@ -4499,6 +5638,14 @@ "is-arrayish": "^0.3.1" } }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -4747,6 +5894,11 @@ } } }, + "node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" + }, "node_modules/sucrase": { "version": "3.35.0", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", @@ -4829,7 +5981,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -4910,6 +6061,11 @@ "node": ">=0.8" } }, + "node_modules/tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", diff --git a/package.json b/package.json index 61ec423..7e69353 100644 --- a/package.json +++ b/package.json @@ -9,18 +9,27 @@ "lint": "next lint" }, "dependencies": { - "react": "19.0.0-rc-66855b96-20241106", - "react-dom": "19.0.0-rc-66855b96-20241106", - "next": "15.0.3" + "@emotion/react": "^11.13.3", + "@emotion/styled": "^11.13.0", + "@mui/icons-material": "^6.1.7", + "@mui/joy": "^5.0.0-beta.48", + "@mui/material": "^6.1.7", + "@mui/styles": "^6.1.7", + "@mui/system": "^6.1.7", + "@mui/x-data-grid": "^7.22.2", + "fontsource-roboto": "^4.0.0", + "next": "15.0.3", + "react": "18.2.0", + "react-dom": "18.2.0" }, "devDependencies": { - "typescript": "^5", "@types/node": "^20", "@types/react": "^18", "@types/react-dom": "^18", + "eslint": "^8", + "eslint-config-next": "15.0.3", "postcss": "^8", "tailwindcss": "^3.4.1", - "eslint": "^8", - "eslint-config-next": "15.0.3" + "typescript": "^5" } } From 53d4e1211d7f9e22e9e42da39db420b7d2259cf5 Mon Sep 17 00:00:00 2001 From: Don Starwsburg Date: Fri, 15 Nov 2024 15:58:34 -0500 Subject: [PATCH 2/2] restructuring folders --- app/Fragments/Armory/index.tsx | 29 + app/Fragments/Armory/package.json | 23 + app/Fragments/Armory/style.module.scss | 1 + app/Fragments/Button/index.js | 38 ++ app/Fragments/Button/package.json | 23 + app/Fragments/Button/style.module.scss | 46 ++ app/Fragments/DSTPageHeader/index.js | 8 + app/Fragments/DSTPageHeader/package.json | 23 + .../DSTPageHeader}/styles.module.css | 0 app/Fragments/Error/index.js | 11 + app/Fragments/Error/package.json | 23 + app/Fragments/Error/style.module.css | 5 + app/Fragments/FooterLink/index.tsx | 13 + app/Fragments/FooterLink/package.json | 23 + app/Fragments/FooterLink/styles.module.css | 5 + app/Fragments/GroundZero/index.tsx | 28 + app/Fragments/GroundZero/package.json | 23 + app/Fragments/GroundZero/style.module.scss | 1 + app/Fragments/Information/index.tsx | 27 + app/Fragments/Information/package.json | 23 + app/Fragments/Information/style.module.scss | 1 + app/Fragments/States/index.tsx | 70 +++ .../Footer/FooterLinks/index copy.js | 0 .../components}/Footer/FooterLinks/index.js | 17 +- .../Footer/FooterLinks/package.json | 0 .../Footer/FooterLinks/styles.module.css | 0 .../components}/Footer/index.tsx | 12 +- .../components}/Footer/package.json | 0 .../components}/Footer/styles.module.scss | 0 .../components}/Header/index.tsx | 4 +- .../components}/Header/package.json | 0 .../components}/Header/styles.module.css | 0 {components => app/components}/Hero/index.tsx | 0 .../components}/Hero/package.json | 0 app/components/Hero/styles.module.css | 0 app/components/Info/About/index.tsx | 35 ++ app/components/Info/About/package.json | 23 + app/components/Info/About/styles.module.css | 0 app/components/Info/ContactUs/index.tsx | 39 ++ app/components/Info/ContactUs/package.json | 23 + .../Info/ContactUs/styles.module.css | 0 app/components/Info/Copyright/index.tsx | 41 ++ app/components/Info/Copyright/package.json | 23 + .../Info/Copyright/styles.module.css | 7 + app/components/Info/Disclosure/index.tsx | 54 ++ app/components/Info/Disclosure/package.json | 23 + .../Info/Disclosure/styles.module.css | 0 app/components/Info/Faq/index.tsx | 34 ++ app/components/Info/Faq/package.json | 23 + app/components/Info/Faq/styles.module.css | 0 app/components/Info/PIP/index.tsx | 39 ++ app/components/Info/PIP/package.json | 23 + app/components/Info/PIP/styles.module.css | 0 app/components/Info/PrivacyPolicy/index.tsx | 35 ++ .../Info/PrivacyPolicy/package.json | 23 + .../Info/PrivacyPolicy/styles.module.css | 0 app/components/Info/TermsOfService/index.tsx | 38 ++ .../Info/TermsOfService/package.json | 23 + .../Info/TermsOfService/styles.module.css | 0 .../components}/SignIn/index.tsx | 0 .../components}/SignIn/package.json | 0 .../components}/SignIn/styles.module.css | 0 app/lib/client.ts | 5 + {lib => app/lib}/constants.ts | 0 {lib => app/lib}/linkList/infoLinks.js | 0 {lib => app/lib}/linkList/sectionLinks.js | 0 app/lib/script.ts | 17 + app/page.tsx | 2 +- package-lock.json | 530 +++++++++++++++++- package.json | 7 +- prisma/schema.prisma | 122 ++++ tsconfig.json | 26 +- 72 files changed, 1661 insertions(+), 31 deletions(-) create mode 100644 app/Fragments/Armory/index.tsx create mode 100644 app/Fragments/Armory/package.json create mode 100644 app/Fragments/Armory/style.module.scss create mode 100644 app/Fragments/Button/index.js create mode 100644 app/Fragments/Button/package.json create mode 100644 app/Fragments/Button/style.module.scss create mode 100644 app/Fragments/DSTPageHeader/index.js create mode 100644 app/Fragments/DSTPageHeader/package.json rename {components/Hero => app/Fragments/DSTPageHeader}/styles.module.css (100%) create mode 100644 app/Fragments/Error/index.js create mode 100644 app/Fragments/Error/package.json create mode 100644 app/Fragments/Error/style.module.css create mode 100644 app/Fragments/FooterLink/index.tsx create mode 100644 app/Fragments/FooterLink/package.json create mode 100644 app/Fragments/FooterLink/styles.module.css create mode 100644 app/Fragments/GroundZero/index.tsx create mode 100644 app/Fragments/GroundZero/package.json create mode 100644 app/Fragments/GroundZero/style.module.scss create mode 100644 app/Fragments/Information/index.tsx create mode 100644 app/Fragments/Information/package.json create mode 100644 app/Fragments/Information/style.module.scss create mode 100644 app/Fragments/States/index.tsx rename {components => app/components}/Footer/FooterLinks/index copy.js (100%) rename {components => app/components}/Footer/FooterLinks/index.js (72%) rename {components => app/components}/Footer/FooterLinks/package.json (100%) rename {components => app/components}/Footer/FooterLinks/styles.module.css (100%) rename {components => app/components}/Footer/index.tsx (74%) rename {components => app/components}/Footer/package.json (100%) rename {components => app/components}/Footer/styles.module.scss (100%) rename {components => app/components}/Header/index.tsx (96%) rename {components => app/components}/Header/package.json (100%) rename {components => app/components}/Header/styles.module.css (100%) rename {components => app/components}/Hero/index.tsx (100%) rename {components => app/components}/Hero/package.json (100%) create mode 100644 app/components/Hero/styles.module.css create mode 100644 app/components/Info/About/index.tsx create mode 100644 app/components/Info/About/package.json create mode 100644 app/components/Info/About/styles.module.css create mode 100644 app/components/Info/ContactUs/index.tsx create mode 100644 app/components/Info/ContactUs/package.json create mode 100644 app/components/Info/ContactUs/styles.module.css create mode 100644 app/components/Info/Copyright/index.tsx create mode 100644 app/components/Info/Copyright/package.json create mode 100644 app/components/Info/Copyright/styles.module.css create mode 100644 app/components/Info/Disclosure/index.tsx create mode 100644 app/components/Info/Disclosure/package.json create mode 100644 app/components/Info/Disclosure/styles.module.css create mode 100644 app/components/Info/Faq/index.tsx create mode 100644 app/components/Info/Faq/package.json create mode 100644 app/components/Info/Faq/styles.module.css create mode 100644 app/components/Info/PIP/index.tsx create mode 100644 app/components/Info/PIP/package.json create mode 100644 app/components/Info/PIP/styles.module.css create mode 100644 app/components/Info/PrivacyPolicy/index.tsx create mode 100644 app/components/Info/PrivacyPolicy/package.json create mode 100644 app/components/Info/PrivacyPolicy/styles.module.css create mode 100644 app/components/Info/TermsOfService/index.tsx create mode 100644 app/components/Info/TermsOfService/package.json create mode 100644 app/components/Info/TermsOfService/styles.module.css rename {components => app/components}/SignIn/index.tsx (100%) rename {components => app/components}/SignIn/package.json (100%) rename {components => app/components}/SignIn/styles.module.css (100%) create mode 100644 app/lib/client.ts rename {lib => app/lib}/constants.ts (100%) rename {lib => app/lib}/linkList/infoLinks.js (100%) rename {lib => app/lib}/linkList/sectionLinks.js (100%) create mode 100644 app/lib/script.ts create mode 100644 prisma/schema.prisma diff --git a/app/Fragments/Armory/index.tsx b/app/Fragments/Armory/index.tsx new file mode 100644 index 0000000..aab471b --- /dev/null +++ b/app/Fragments/Armory/index.tsx @@ -0,0 +1,29 @@ +import { sectionLinks } from "@/app/lib/linkList/sectionLinks"; +import Link from "next/link"; +import armoryLinks from "@/app/lib/linkList/sectionLinks"; + +let linksArray = [ + sectionLinks.UPPERS, + sectionLinks.LOWERS, + sectionLinks.BARRELS, + sectionLinks.OPTICS, + sectionLinks.ACCESSORIES, +]; +export const Armory = (props) => { + return ( +
+ {armoryLinks.length} +

{props.titleText}

+
    + {linksArray.map((link, index) => ( +
  • + + {link.TEXT} + +
  • + ))} +
+
+ ) +} +export default Armory; \ No newline at end of file diff --git a/app/Fragments/Armory/package.json b/app/Fragments/Armory/package.json new file mode 100644 index 0000000..8d645ac --- /dev/null +++ b/app/Fragments/Armory/package.json @@ -0,0 +1,23 @@ +{ + "name": "armory", + "version": "0.0.0", + "private": true, + "main": "./index", + "author": { + "name": "Sean Strawsburg", + "email": "sean@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/" + } + ] +} \ No newline at end of file diff --git a/app/Fragments/Armory/style.module.scss b/app/Fragments/Armory/style.module.scss new file mode 100644 index 0000000..b9c807d --- /dev/null +++ b/app/Fragments/Armory/style.module.scss @@ -0,0 +1 @@ +@import '../../scss/variables.scss'; \ No newline at end of file diff --git a/app/Fragments/Button/index.js b/app/Fragments/Button/index.js new file mode 100644 index 0000000..76485c3 --- /dev/null +++ b/app/Fragments/Button/index.js @@ -0,0 +1,38 @@ +import React from 'react'; + +import styles from './style.module.scss' + +const Button = ({ + children, + className, + color = 'black', + type = 'button', + ...props +}) => ( + +); + +const ButtonUnobtrusive = ({ + children, + className, + type = 'button', + ...props +}) => ( + +); + +export { ButtonUnobtrusive }; + +export default Button; diff --git a/app/Fragments/Button/package.json b/app/Fragments/Button/package.json new file mode 100644 index 0000000..0f331ef --- /dev/null +++ b/app/Fragments/Button/package.json @@ -0,0 +1,23 @@ +{ + "name": "button", + "version": "0.0.0", + "private": true, + "main": "./index", + "author": { + "name": "Sean Strawsburg", + "email": "sean@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/" + } + ] +} \ No newline at end of file diff --git a/app/Fragments/Button/style.module.scss b/app/Fragments/Button/style.module.scss new file mode 100644 index 0000000..7dcc5ad --- /dev/null +++ b/app/Fragments/Button/style.module.scss @@ -0,0 +1,46 @@ +.Button { + padding: 10px; + background: none; + cursor: pointer; + transition: color 0.25s ease-in-out; + transition: background 0.25s ease-in-out; +} + +.Button_white { + border: 1px solid #fff; + color: #fff; +} + +.Button_white:hover { + color: #000; + background: #fff; +} + +.Button_black { + border: 1px solid #000; + color: #000; +} + +.Button_black:hover { + color: #fff; + background: #000; +} + +.Button_unobtrusive { + padding: 0; + color: #000; + background: none; + border: none; + cursor: pointer; + opacity: 1; + transition: opacity 0.25s ease-in-out; + outline: none; +} + +.Button_unobtrusive:hover { + opacity: 0.35; +} + +.Button_unobtrusive:focus { + outline: none; +} \ No newline at end of file diff --git a/app/Fragments/DSTPageHeader/index.js b/app/Fragments/DSTPageHeader/index.js new file mode 100644 index 0000000..d67d371 --- /dev/null +++ b/app/Fragments/DSTPageHeader/index.js @@ -0,0 +1,8 @@ + +const DSTPageHeader = props => { + return ( +
{props.title}
+ + ) +} +export default DSTPageHeader \ No newline at end of file diff --git a/app/Fragments/DSTPageHeader/package.json b/app/Fragments/DSTPageHeader/package.json new file mode 100644 index 0000000..47ecdf7 --- /dev/null +++ b/app/Fragments/DSTPageHeader/package.json @@ -0,0 +1,23 @@ +{ + "name": "DSTPageHeader", + "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/" + } + ] +} \ No newline at end of file diff --git a/components/Hero/styles.module.css b/app/Fragments/DSTPageHeader/styles.module.css similarity index 100% rename from components/Hero/styles.module.css rename to app/Fragments/DSTPageHeader/styles.module.css diff --git a/app/Fragments/Error/index.js b/app/Fragments/Error/index.js new file mode 100644 index 0000000..e498e75 --- /dev/null +++ b/app/Fragments/Error/index.js @@ -0,0 +1,11 @@ +import React from 'react'; + +import styles from './style.module.css'; + +const ErrorMessage = ({ error }) => ( +
+ {error.toString()} +
+); + +export default ErrorMessage; diff --git a/app/Fragments/Error/package.json b/app/Fragments/Error/package.json new file mode 100644 index 0000000..eb831d9 --- /dev/null +++ b/app/Fragments/Error/package.json @@ -0,0 +1,23 @@ +{ + "name": "error", + "version": "0.0.0", + "private": true, + "main": "./index", + "author": { + "name": "Sean Strawsburg", + "email": "sean@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/" + } + ] +} \ No newline at end of file diff --git a/app/Fragments/Error/style.module.css b/app/Fragments/Error/style.module.css new file mode 100644 index 0000000..9933d45 --- /dev/null +++ b/app/Fragments/Error/style.module.css @@ -0,0 +1,5 @@ +.ErrorMessage { + margin: 20px; + display: flex; + justify-content: center; +} \ No newline at end of file diff --git a/app/Fragments/FooterLink/index.tsx b/app/Fragments/FooterLink/index.tsx new file mode 100644 index 0000000..e4ce63b --- /dev/null +++ b/app/Fragments/FooterLink/index.tsx @@ -0,0 +1,13 @@ +import { ListItemText, Link } from "@mui/material"; +import styles from './styles.module.css' +import { withStyles } from '@mui/material/styles'; +import styled from '@emotion/styled' +import React from "react"; + +export default function FooterLink(props) { + return ( + + {props.title} + + ) +} \ No newline at end of file diff --git a/app/Fragments/FooterLink/package.json b/app/Fragments/FooterLink/package.json new file mode 100644 index 0000000..0053845 --- /dev/null +++ b/app/Fragments/FooterLink/package.json @@ -0,0 +1,23 @@ +{ + "name": "footerlink", + "version": "0.0.0", + "private": true, + "main": "./index", + "author": { + "name": "Sean Strawsburg", + "email": "sean@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/" + } + ] +} \ No newline at end of file diff --git a/app/Fragments/FooterLink/styles.module.css b/app/Fragments/FooterLink/styles.module.css new file mode 100644 index 0000000..d7245c0 --- /dev/null +++ b/app/Fragments/FooterLink/styles.module.css @@ -0,0 +1,5 @@ + +.navLinks:hover { + font-weight: bold; + text-decoration : none; +} \ No newline at end of file diff --git a/app/Fragments/GroundZero/index.tsx b/app/Fragments/GroundZero/index.tsx new file mode 100644 index 0000000..c371a9d --- /dev/null +++ b/app/Fragments/GroundZero/index.tsx @@ -0,0 +1,28 @@ +import { sectionLinks } from "@/app/lib/linkList/sectionLinks"; +import Link from "next/link"; + +let linksArray = [ + sectionLinks.BLOG, + sectionLinks.PRICEDROPS, + sectionLinks.BUILDS, + sectionLinks.BUILDGUIDES, +]; + +export const GroundZero = (props) => { + return ( +
+

{props.titleText}

+
    + {linksArray.map((link, index) => ( +
  • + + {link.TEXT} + +
  • + ))} +
+
+ + ) +} +export default GroundZero; \ No newline at end of file diff --git a/app/Fragments/GroundZero/package.json b/app/Fragments/GroundZero/package.json new file mode 100644 index 0000000..04c21bf --- /dev/null +++ b/app/Fragments/GroundZero/package.json @@ -0,0 +1,23 @@ +{ + "name": "groundzero", + "version": "0.0.0", + "private": true, + "main": "./index", + "author": { + "name": "Sean Strawsburg", + "email": "sean@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/" + } + ] +} \ No newline at end of file diff --git a/app/Fragments/GroundZero/style.module.scss b/app/Fragments/GroundZero/style.module.scss new file mode 100644 index 0000000..b9c807d --- /dev/null +++ b/app/Fragments/GroundZero/style.module.scss @@ -0,0 +1 @@ +@import '../../scss/variables.scss'; \ No newline at end of file diff --git a/app/Fragments/Information/index.tsx b/app/Fragments/Information/index.tsx new file mode 100644 index 0000000..4d631f0 --- /dev/null +++ b/app/Fragments/Information/index.tsx @@ -0,0 +1,27 @@ +import { infoLinks } from "@/app/lib/linkList/infoLinks"; +import Link from "next/link"; +let linksArray = [ + infoLinks.ABOUT, + infoLinks.FAQ, + infoLinks.DISCLOSURE, + infoLinks.PRIVACYPOLICY, + infoLinks.PIP, + infoLinks.TOS +]; +export const Information = (props) => { + return ( +
+

{props.titleText}

+
    + {linksArray.map((link, index) => ( +
  • + + {link.TEXT} + +
  • + ))} +
+
+ ) +} +export default Information; \ No newline at end of file diff --git a/app/Fragments/Information/package.json b/app/Fragments/Information/package.json new file mode 100644 index 0000000..bb5d076 --- /dev/null +++ b/app/Fragments/Information/package.json @@ -0,0 +1,23 @@ +{ + "name": "information", + "version": "0.0.0", + "private": true, + "main": "./index", + "author": { + "name": "Sean Strawsburg", + "email": "sean@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/" + } + ] +} \ No newline at end of file diff --git a/app/Fragments/Information/style.module.scss b/app/Fragments/Information/style.module.scss new file mode 100644 index 0000000..b9c807d --- /dev/null +++ b/app/Fragments/Information/style.module.scss @@ -0,0 +1 @@ +@import '../../scss/variables.scss'; \ No newline at end of file diff --git a/app/Fragments/States/index.tsx b/app/Fragments/States/index.tsx new file mode 100644 index 0000000..a58ca91 --- /dev/null +++ b/app/Fragments/States/index.tsx @@ -0,0 +1,70 @@ +import React from 'react'; +import { makeStyles } from '@mui/material/styles'; +import InputLabel from '@mui/material/InputLabel'; +import FormHelperText from '@mui/material/FormHelperText'; +import FormControl from '@mui/material/FormControl'; +import Select from '@mui/material/Select'; +import NativeSelect from '@mui/material/NativeSelect'; +import { useQuery, gql } from "@apollo/client"; + + +const useStyles = makeStyles((theme) => ({ + formControl: { + margin: theme.spacing(1), + minWidth: 120, + }, + selectEmpty: { + marginTop: theme.spacing(2), + }, +})); + + const GET_STATES = gql` + { + states { + abbrev + name + } + }` + +export default function StateNativeSelects() { + const classes = useStyles(); + const [state, setState] = React.useState({ + abbrev: '', + name: '', + }); + + const handleChange = (event) => { + const name = event.target.name; + setState({ + ...state, + [name]: event.target.value, + }); + }; + +const { loading, error, data } = useQuery(GET_STATES); + + if (loading) return

Loading...

; + if (error) return

Error :(

; + + return ( +
+ + State + + +
+ ); +} diff --git a/components/Footer/FooterLinks/index copy.js b/app/components/Footer/FooterLinks/index copy.js similarity index 100% rename from components/Footer/FooterLinks/index copy.js rename to app/components/Footer/FooterLinks/index copy.js diff --git a/components/Footer/FooterLinks/index.js b/app/components/Footer/FooterLinks/index.js similarity index 72% rename from components/Footer/FooterLinks/index.js rename to app/components/Footer/FooterLinks/index.js index 19aadf3..27dde9f 100644 --- a/components/Footer/FooterLinks/index.js +++ b/app/components/Footer/FooterLinks/index.js @@ -8,23 +8,8 @@ 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 '@/fragments/FooterLink'; +import FooterLink from '@/app/Fragments/FooterLink'; -// SS - IDK what this is. It feels hacky.. -// DS - Because it is hacky, its stupid javascript magic -// const useStyles = theme => ({ //const makes a constant, => defines a function, -// so it looks like useStyles will end up beign a function that is actually the theme function -// the useStyles function will have properties in root, so useStyles.root -// root: { -// width: '75%', -// maxWidth: 260, -// /* backgroundColor: theme.palette.background.paper, */ -// float: 'right', -// marginRight: '2%', -// fontSize: '.80em' -// }, -// }); -// } class FooterLinks extends React.Component { constructor(props) { diff --git a/components/Footer/FooterLinks/package.json b/app/components/Footer/FooterLinks/package.json similarity index 100% rename from components/Footer/FooterLinks/package.json rename to app/components/Footer/FooterLinks/package.json diff --git a/components/Footer/FooterLinks/styles.module.css b/app/components/Footer/FooterLinks/styles.module.css similarity index 100% rename from components/Footer/FooterLinks/styles.module.css rename to app/components/Footer/FooterLinks/styles.module.css diff --git a/components/Footer/index.tsx b/app/components/Footer/index.tsx similarity index 74% rename from components/Footer/index.tsx rename to app/components/Footer/index.tsx index aa5b340..79a2dfb 100644 --- a/components/Footer/index.tsx +++ b/app/components/Footer/index.tsx @@ -1,14 +1,14 @@ import React, { Component } from "react"; import PropTypes from "prop-types"; import styles from './styles.module.scss'; -import Copyright from "@/components/Info/Copyright"; +import Copyright from "@/app/components/Info/Copyright"; import FooterLinks from "./FooterLinks"; import Link from "next/link"; -import { infoLinks } from "@/lib/linkList/infoLinks"; -import { sectionLinks } from "@/lib/linkList/sectionLinks"; -import Armory from '@/fragments/Armory'; -import GroundZero from "@/fragments/GroundZero"; -import Information from "@/fragments/Information"; +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 ( diff --git a/components/Footer/package.json b/app/components/Footer/package.json similarity index 100% rename from components/Footer/package.json rename to app/components/Footer/package.json diff --git a/components/Footer/styles.module.scss b/app/components/Footer/styles.module.scss similarity index 100% rename from components/Footer/styles.module.scss rename to app/components/Footer/styles.module.scss diff --git a/components/Header/index.tsx b/app/components/Header/index.tsx similarity index 96% rename from components/Header/index.tsx rename to app/components/Header/index.tsx index cac982a..312c75e 100644 --- a/components/Header/index.tsx +++ b/app/components/Header/index.tsx @@ -9,8 +9,8 @@ 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 '@/lib/linkList/infoLinks'; -import sectionLinks from '@/lib/linkList/sectionLinks'; +import { infoLinks } from '@/app/lib/linkList/infoLinks'; +import sectionLinks from '@/app/lib/linkList/sectionLinks'; export default class Header extends Component { constructor(props) { diff --git a/components/Header/package.json b/app/components/Header/package.json similarity index 100% rename from components/Header/package.json rename to app/components/Header/package.json diff --git a/components/Header/styles.module.css b/app/components/Header/styles.module.css similarity index 100% rename from components/Header/styles.module.css rename to app/components/Header/styles.module.css diff --git a/components/Hero/index.tsx b/app/components/Hero/index.tsx similarity index 100% rename from components/Hero/index.tsx rename to app/components/Hero/index.tsx diff --git a/components/Hero/package.json b/app/components/Hero/package.json similarity index 100% rename from components/Hero/package.json rename to app/components/Hero/package.json diff --git a/app/components/Hero/styles.module.css b/app/components/Hero/styles.module.css new file mode 100644 index 0000000..e69de29 diff --git a/app/components/Info/About/index.tsx b/app/components/Info/About/index.tsx new file mode 100644 index 0000000..055d46c --- /dev/null +++ b/app/components/Info/About/index.tsx @@ -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 ( +
+

About

+ {data.site_contents.map((site_content: { content: any; }) => ( + + ))} +
+ ) +} + + +About.propTypes = { + +}; diff --git a/app/components/Info/About/package.json b/app/components/Info/About/package.json new file mode 100644 index 0000000..0992d59 --- /dev/null +++ b/app/components/Info/About/package.json @@ -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/" + } + ] +} \ No newline at end of file diff --git a/app/components/Info/About/styles.module.css b/app/components/Info/About/styles.module.css new file mode 100644 index 0000000..e69de29 diff --git a/app/components/Info/ContactUs/index.tsx b/app/components/Info/ContactUs/index.tsx new file mode 100644 index 0000000..25a75b0 --- /dev/null +++ b/app/components/Info/ContactUs/index.tsx @@ -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 ( +
+ + {data.site_contents.map((site_content: { content: any; }) => ( + + ))} + +
+ ) + +} + +ContactUs.propTypes = { + +}; diff --git a/app/components/Info/ContactUs/package.json b/app/components/Info/ContactUs/package.json new file mode 100644 index 0000000..06d382c --- /dev/null +++ b/app/components/Info/ContactUs/package.json @@ -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/" + } + ] +} \ No newline at end of file diff --git a/app/components/Info/ContactUs/styles.module.css b/app/components/Info/ContactUs/styles.module.css new file mode 100644 index 0000000..e69de29 diff --git a/app/components/Info/Copyright/index.tsx b/app/components/Info/Copyright/index.tsx new file mode 100644 index 0000000..5ae1961 --- /dev/null +++ b/app/components/Info/Copyright/index.tsx @@ -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 ( + +
©  {new Date().getFullYear()} {' '} + + {COMPANY_NAME} + {' '} + All Rights Reserved. +
+
+ + ) + } +} + +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; + } + } +` \ No newline at end of file diff --git a/app/components/Info/Copyright/package.json b/app/components/Info/Copyright/package.json new file mode 100644 index 0000000..58d9367 --- /dev/null +++ b/app/components/Info/Copyright/package.json @@ -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/" + } + ] +} \ No newline at end of file diff --git a/app/components/Info/Copyright/styles.module.css b/app/components/Info/Copyright/styles.module.css new file mode 100644 index 0000000..a40c187 --- /dev/null +++ b/app/components/Info/Copyright/styles.module.css @@ -0,0 +1,7 @@ +.white { + color: white; + font-size: .5em; + text-transform: uppercase; + letter-spacing: 2px; + font-family: "hind"; +} \ No newline at end of file diff --git a/app/components/Info/Disclosure/index.tsx b/app/components/Info/Disclosure/index.tsx new file mode 100644 index 0000000..fa665cf --- /dev/null +++ b/app/components/Info/Disclosure/index.tsx @@ -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 ( +
+ + {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. + + + 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. + +
+ {data.site_contents.map((site_content: { content: any; }) => ( + + ))} +
+ + Thanks, + + + {constants.COMPANY_NAME} + + + {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. + +
+ ) +} + + +Disclosure.propTypes = { + +}; diff --git a/app/components/Info/Disclosure/package.json b/app/components/Info/Disclosure/package.json new file mode 100644 index 0000000..993303e --- /dev/null +++ b/app/components/Info/Disclosure/package.json @@ -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/" + } + ] +} \ No newline at end of file diff --git a/app/components/Info/Disclosure/styles.module.css b/app/components/Info/Disclosure/styles.module.css new file mode 100644 index 0000000..e69de29 diff --git a/app/components/Info/Faq/index.tsx b/app/components/Info/Faq/index.tsx new file mode 100644 index 0000000..babfa2e --- /dev/null +++ b/app/components/Info/Faq/index.tsx @@ -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 ( + +
+ {props.children} +

Frequently Asked Questions

+
+ {data.site_contents.map((site_content: { content: any; }) => ( + + ))} + +
+
+ ) +} diff --git a/app/components/Info/Faq/package.json b/app/components/Info/Faq/package.json new file mode 100644 index 0000000..8bf5f47 --- /dev/null +++ b/app/components/Info/Faq/package.json @@ -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/" + } + ] +} \ No newline at end of file diff --git a/app/components/Info/Faq/styles.module.css b/app/components/Info/Faq/styles.module.css new file mode 100644 index 0000000..e69de29 diff --git a/app/components/Info/PIP/index.tsx b/app/components/Info/PIP/index.tsx new file mode 100644 index 0000000..2ed2a0b --- /dev/null +++ b/app/components/Info/PIP/index.tsx @@ -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 ( +
+ + + + {data.site_contents.map((site_content: { content: any; }) => ( + + ))} + +
+ ) +} + +PIP.propTypes = { + +}; diff --git a/app/components/Info/PIP/package.json b/app/components/Info/PIP/package.json new file mode 100644 index 0000000..7788c82 --- /dev/null +++ b/app/components/Info/PIP/package.json @@ -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/" + } + ] +} \ No newline at end of file diff --git a/app/components/Info/PIP/styles.module.css b/app/components/Info/PIP/styles.module.css new file mode 100644 index 0000000..e69de29 diff --git a/app/components/Info/PrivacyPolicy/index.tsx b/app/components/Info/PrivacyPolicy/index.tsx new file mode 100644 index 0000000..de78f16 --- /dev/null +++ b/app/components/Info/PrivacyPolicy/index.tsx @@ -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 ( +
+ + + {data.site_contents.map((site_content: { content: any; }) => ( + + ))} + +
+ ) + } + \ No newline at end of file diff --git a/app/components/Info/PrivacyPolicy/package.json b/app/components/Info/PrivacyPolicy/package.json new file mode 100644 index 0000000..6de89ba --- /dev/null +++ b/app/components/Info/PrivacyPolicy/package.json @@ -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/" + } + ] +} \ No newline at end of file diff --git a/app/components/Info/PrivacyPolicy/styles.module.css b/app/components/Info/PrivacyPolicy/styles.module.css new file mode 100644 index 0000000..e69de29 diff --git a/app/components/Info/TermsOfService/index.tsx b/app/components/Info/TermsOfService/index.tsx new file mode 100644 index 0000000..68b3951 --- /dev/null +++ b/app/components/Info/TermsOfService/index.tsx @@ -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 ( +
+ + +
+ {data.site_contents.map((site_content: { content: any; }) => ( + + ))} +
+
+
+ ) +} + +TermsOfService.propTypes = { + +}; diff --git a/app/components/Info/TermsOfService/package.json b/app/components/Info/TermsOfService/package.json new file mode 100644 index 0000000..8860bc2 --- /dev/null +++ b/app/components/Info/TermsOfService/package.json @@ -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/" + } + ] +} \ No newline at end of file diff --git a/app/components/Info/TermsOfService/styles.module.css b/app/components/Info/TermsOfService/styles.module.css new file mode 100644 index 0000000..e69de29 diff --git a/components/SignIn/index.tsx b/app/components/SignIn/index.tsx similarity index 100% rename from components/SignIn/index.tsx rename to app/components/SignIn/index.tsx diff --git a/components/SignIn/package.json b/app/components/SignIn/package.json similarity index 100% rename from components/SignIn/package.json rename to app/components/SignIn/package.json diff --git a/components/SignIn/styles.module.css b/app/components/SignIn/styles.module.css similarity index 100% rename from components/SignIn/styles.module.css rename to app/components/SignIn/styles.module.css diff --git a/app/lib/client.ts b/app/lib/client.ts new file mode 100644 index 0000000..107264a --- /dev/null +++ b/app/lib/client.ts @@ -0,0 +1,5 @@ +import { PrismaClient } from '@prisma/client' + +let prisma = new PrismaClient() + +export default prisma \ No newline at end of file diff --git a/lib/constants.ts b/app/lib/constants.ts similarity index 100% rename from lib/constants.ts rename to app/lib/constants.ts diff --git a/lib/linkList/infoLinks.js b/app/lib/linkList/infoLinks.js similarity index 100% rename from lib/linkList/infoLinks.js rename to app/lib/linkList/infoLinks.js diff --git a/lib/linkList/sectionLinks.js b/app/lib/linkList/sectionLinks.js similarity index 100% rename from lib/linkList/sectionLinks.js rename to app/lib/linkList/sectionLinks.js diff --git a/app/lib/script.ts b/app/lib/script.ts new file mode 100644 index 0000000..04cfb4b --- /dev/null +++ b/app/lib/script.ts @@ -0,0 +1,17 @@ +import { PrismaClient } from '@prisma/client' + +const prisma = new PrismaClient() + +async function main() { + // ... you will write your Prisma Client queries here +} + +main() + .then(async () => { + await prisma.$disconnect() + }) + .catch(async (e) => { + console.error(e) + await prisma.$disconnect() + process.exit(1) + }) \ No newline at end of file diff --git a/app/page.tsx b/app/page.tsx index 9007252..dd57056 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -20,7 +20,7 @@ export default function Home() { . -
  • Save and see your changes instantly.
  • +
  • Save and see your changes instantly!
  • diff --git a/package-lock.json b/package-lock.json index 88eb282..15186fa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,20 +16,23 @@ "@mui/styles": "^6.1.7", "@mui/system": "^6.1.7", "@mui/x-data-grid": "^7.22.2", + "@prisma/client": "^5.22.0", "fontsource-roboto": "^4.0.0", "next": "15.0.3", "react": "18.2.0", "react-dom": "18.2.0" }, "devDependencies": { - "@types/node": "^20", + "@types/node": "^20.17.6", "@types/react": "^18", "@types/react-dom": "^18", "eslint": "^8", "eslint-config-next": "15.0.3", "postcss": "^8", + "prisma": "^5.22.0", "tailwindcss": "^3.4.1", - "typescript": "^5" + "tsx": "^4.19.2", + "typescript": "^5.6.3" } }, "node_modules/@alloc/quick-lru": { @@ -317,6 +320,390 @@ "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==" }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", + "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", + "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", + "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", + "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", + "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", + "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", + "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", + "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", + "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", + "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", + "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", + "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", + "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", + "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", + "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", + "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", + "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", + "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", + "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", + "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", + "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", + "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", + "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", + "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", @@ -1642,6 +2029,68 @@ "url": "https://opencollective.com/popperjs" } }, + "node_modules/@prisma/client": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-5.22.0.tgz", + "integrity": "sha512-M0SVXfyHnQREBKxCgyo7sffrKttwE6R8PMq330MIUF0pTwjUhLbW84pFDlf06B27XyCR++VtjugEnIHdr07SVA==", + "hasInstallScript": true, + "engines": { + "node": ">=16.13" + }, + "peerDependencies": { + "prisma": "*" + }, + "peerDependenciesMeta": { + "prisma": { + "optional": true + } + } + }, + "node_modules/@prisma/debug": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-5.22.0.tgz", + "integrity": "sha512-AUt44v3YJeggO2ZU5BkXI7M4hu9BF2zzH2iF2V5pyXT/lRTyWiElZ7It+bRH1EshoMRxHgpYg4VB6rCM+mG5jQ==", + "devOptional": true + }, + "node_modules/@prisma/engines": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-5.22.0.tgz", + "integrity": "sha512-UNjfslWhAt06kVL3CjkuYpHAWSO6L4kDCVPegV6itt7nD1kSJavd3vhgAEhjglLJJKEdJ7oIqDJ+yHk6qO8gPA==", + "devOptional": true, + "hasInstallScript": true, + "dependencies": { + "@prisma/debug": "5.22.0", + "@prisma/engines-version": "5.22.0-44.605197351a3c8bdd595af2d2a9bc3025bca48ea2", + "@prisma/fetch-engine": "5.22.0", + "@prisma/get-platform": "5.22.0" + } + }, + "node_modules/@prisma/engines-version": { + "version": "5.22.0-44.605197351a3c8bdd595af2d2a9bc3025bca48ea2", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.22.0-44.605197351a3c8bdd595af2d2a9bc3025bca48ea2.tgz", + "integrity": "sha512-2PTmxFR2yHW/eB3uqWtcgRcgAbG1rwG9ZriSvQw+nnb7c4uCr3RAcGMb6/zfE88SKlC1Nj2ziUvc96Z379mHgQ==", + "devOptional": true + }, + "node_modules/@prisma/fetch-engine": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-5.22.0.tgz", + "integrity": "sha512-bkrD/Mc2fSvkQBV5EpoFcZ87AvOgDxbG99488a5cexp5Ccny+UM6MAe/UFkUC0wLYD9+9befNOqGiIJhhq+HbA==", + "devOptional": true, + "dependencies": { + "@prisma/debug": "5.22.0", + "@prisma/engines-version": "5.22.0-44.605197351a3c8bdd595af2d2a9bc3025bca48ea2", + "@prisma/get-platform": "5.22.0" + } + }, + "node_modules/@prisma/get-platform": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-5.22.0.tgz", + "integrity": "sha512-pHhpQdr1UPFpt+zFfnPazhulaZYCUqeIcPpJViYoq9R+D/yw4fjE+CtnsnKzPYm0ddUbeXUzjGVGIRVgPDCk4Q==", + "devOptional": true, + "dependencies": { + "@prisma/debug": "5.22.0" + } + }, "node_modules/@rtsao/scc": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", @@ -2909,6 +3358,45 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/esbuild": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", + "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.23.1", + "@esbuild/android-arm": "0.23.1", + "@esbuild/android-arm64": "0.23.1", + "@esbuild/android-x64": "0.23.1", + "@esbuild/darwin-arm64": "0.23.1", + "@esbuild/darwin-x64": "0.23.1", + "@esbuild/freebsd-arm64": "0.23.1", + "@esbuild/freebsd-x64": "0.23.1", + "@esbuild/linux-arm": "0.23.1", + "@esbuild/linux-arm64": "0.23.1", + "@esbuild/linux-ia32": "0.23.1", + "@esbuild/linux-loong64": "0.23.1", + "@esbuild/linux-mips64el": "0.23.1", + "@esbuild/linux-ppc64": "0.23.1", + "@esbuild/linux-riscv64": "0.23.1", + "@esbuild/linux-s390x": "0.23.1", + "@esbuild/linux-x64": "0.23.1", + "@esbuild/netbsd-x64": "0.23.1", + "@esbuild/openbsd-arm64": "0.23.1", + "@esbuild/openbsd-x64": "0.23.1", + "@esbuild/sunos-x64": "0.23.1", + "@esbuild/win32-arm64": "0.23.1", + "@esbuild/win32-ia32": "0.23.1", + "@esbuild/win32-x64": "0.23.1" + } + }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -5218,6 +5706,25 @@ "node": ">= 0.8.0" } }, + "node_modules/prisma": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-5.22.0.tgz", + "integrity": "sha512-vtpjW3XuYCSnMsNVBjLMNkTj6OZbudcPPTPYHqX0CJfpcdWciI1dM8uHETwmDxxiqEwCIE6WvXucWUetJgfu/A==", + "devOptional": true, + "hasInstallScript": true, + "dependencies": { + "@prisma/engines": "5.22.0" + }, + "bin": { + "prisma": "build/index.js" + }, + "engines": { + "node": ">=16.13" + }, + "optionalDependencies": { + "fsevents": "2.3.3" + } + }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -6113,6 +6620,25 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" }, + "node_modules/tsx": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.2.tgz", + "integrity": "sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==", + "dev": true, + "dependencies": { + "esbuild": "~0.23.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", diff --git a/package.json b/package.json index 7e69353..394eb62 100644 --- a/package.json +++ b/package.json @@ -17,19 +17,22 @@ "@mui/styles": "^6.1.7", "@mui/system": "^6.1.7", "@mui/x-data-grid": "^7.22.2", + "@prisma/client": "^5.22.0", "fontsource-roboto": "^4.0.0", "next": "15.0.3", "react": "18.2.0", "react-dom": "18.2.0" }, "devDependencies": { - "@types/node": "^20", + "@types/node": "^20.17.6", "@types/react": "^18", "@types/react-dom": "^18", "eslint": "^8", "eslint-config-next": "15.0.3", "postcss": "^8", + "prisma": "^5.22.0", "tailwindcss": "^3.4.1", - "typescript": "^5" + "tsx": "^4.19.2", + "typescript": "^5.6.3" } } diff --git a/prisma/schema.prisma b/prisma/schema.prisma new file mode 100644 index 0000000..4cfe300 --- /dev/null +++ b/prisma/schema.prisma @@ -0,0 +1,122 @@ +generator client { + provider = "prisma-client-js" +} + +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} + +model Post { + id Int @id @default(autoincrement()) + createdAt DateTime @default(now()) + updatedAt DateTime + title String? + content String? + published Boolean @default(false) + authorId Int + User User @relation(fields: [authorId], references: [id]) + + @@index([id]) +} + +model Profile { + id Int @id @default(autoincrement()) + bio String? + userId Int @unique + User User @relation(fields: [userId], references: [id]) + + @@index([id]) +} + +model User { + id Int @id @default(autoincrement()) + email String @unique + name String? + Post Post[] + Profile Profile? + + @@index([id]) +} + +model lipseycatalog { + id Int @id @default(autoincrement()) + itemno String @db.VarChar(20) + description1 String? + description2 String? + upc String? @db.VarChar(20) + manufacturermodelno String? @db.VarChar(30) + msrp Float? + model String? + calibergauge String? + manufacturer String? + type String? + action String? + barrellength String? + capacity String? + finish String? + overalllength String? + receiver String? + safety String? + sights String? + stockframegrips String? + magazine String? + weight String? + imagename String? + chamber String? + drilledandtapped String? + rateoftwist String? + itemtype String? + additionalfeature1 String? + additionalfeature2 String? + additionalfeature3 String? + shippingweight String? + boundbookmanufacturer String? + boundbookmodel String? + boundbooktype String? + nfathreadpattern String? + nfaattachmentmethod String? + nfabaffletype String? + silencercanbedisassembled String? + silencerconstructionmaterial String? + nfadbreduction String? + silenceroutsidediameter String? + nfaform3caliber String? + opticmagnification String? + maintubesize String? + adjustableobjective String? + objectivesize String? + opticadjustments String? + illuminatedreticle String? + reticle String? + exclusive String? + quantity String? @db.VarChar(10) + allocated String? + onsale String? + price Float? + currentprice Float? + retailmap Float? + fflrequired String? + sotrequired String? + exclusivetype String? + scopecoverincluded String? + special String? + sightstype String? + case String? + choke String? + dbreduction String? + family String? + finishtype String? + frame String? + griptype String? @db.VarChar(30) + handgunslidematerial String? + countryoforigin String? @db.VarChar(4) + itemlength String? + itemwidth String? + itemheight String? + packagelength Float? + packagewidth Float? + packageheight Float? + itemgroup String? @db.VarChar(40) + createdon DateTime? @db.Timestamp(6) +} diff --git a/tsconfig.json b/tsconfig.json index d8b9323..0696bdd 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -19,8 +19,30 @@ } ], "paths": { - "@/*": ["./*"] - } + "@/*": ["./*"], + "@/components/*": [ + "./app/components/*" + ], + "@/layouts/*": [ + "./app/components/layouts/*" + ], + "@/fragments/*": [ + "./app/Fragments/*" + ], + "@/lib/*": [ + "./app/lib/*" + ], + "@/scss/*": [ + "./scss/*" + ], + "@/admin/*": [ + "./app/components/Admin/*" + ], + "@/products/*": [ + "./app/components/Products/*" + ] + }, + }, "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], "exclude": ["node_modules"]