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 (
+
+ {posts.map((post) => (
+ {post.title}
+ ))}
+
+ )
+ }
\ No newline at end of file
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
+}) => (
+
+ {children}
+
+);
+
+const ButtonUnobtrusive = ({
+ children,
+ className,
+ type = 'button',
+ ...props
+}) => (
+
+ {children}
+
+);
+
+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/app/Fragments/DSTPageHeader/styles.module.css b/app/Fragments/DSTPageHeader/styles.module.css
new file mode 100644
index 0000000..e69de29
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
+
+
+ {data.states.map(({ abbrev, name }) => (
+ {name}
+ ))}
+
+
+
+ );
+}
diff --git a/app/components/Footer/FooterLinks/index copy.js b/app/components/Footer/FooterLinks/index copy.js
new file mode 100644
index 0000000..0b3be57
--- /dev/null
+++ b/app/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 (
+
+ )
+ }
+
diff --git a/app/components/Footer/FooterLinks/index.js b/app/components/Footer/FooterLinks/index.js
new file mode 100644
index 0000000..27dde9f
--- /dev/null
+++ b/app/components/Footer/FooterLinks/index.js
@@ -0,0 +1,53 @@
+import React, { Component } from 'react'
+import PropTypes from 'prop-types' //ES6
+import styles from './styles.module.css'
+import List from '@mui/material/List'
+import ListItem from '@mui/material/ListItem';
+import ListItemText from '@mui/material/ListItemText';
+import TypoGraphy from '@mui/material/Typography'
+import Link from 'next/link'
+import { withStyles } from '@mui/material/styles';
+import styled from '@emotion/styled'
+import FooterLink from '@/app/Fragments/FooterLink';
+
+
+class FooterLinks extends React.Component {
+ constructor(props) {
+ super(props)
+ this.state = {
+ }
+ }
+
+ render() {
+ const { classes } = this.props;
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+ }
+}
+
+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/app/components/Footer/FooterLinks/package.json b/app/components/Footer/FooterLinks/package.json
new file mode 100644
index 0000000..3448443
--- /dev/null
+++ b/app/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/app/components/Footer/FooterLinks/styles.module.css b/app/components/Footer/FooterLinks/styles.module.css
new file mode 100644
index 0000000..5d56616
--- /dev/null
+++ b/app/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/app/components/Footer/index.tsx b/app/components/Footer/index.tsx
new file mode 100644
index 0000000..79a2dfb
--- /dev/null
+++ b/app/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 "@/app/components/Info/Copyright";
+import FooterLinks from "./FooterLinks";
+import Link from "next/link";
+import { infoLinks } from "@/app/lib/linkList/infoLinks";
+import { sectionLinks } from "@/app/lib/linkList/sectionLinks";
+import Armory from '@/app/Fragments/Armory';
+import GroundZero from "@/app/Fragments/GroundZero";
+import Information from "@/app/Fragments/Information";
+export const Footer = () => {
+
+ return (
+ //
+ //
+ //
+ //
+ <>
+
+
+
+
+ Logo
+
+
Find Parts.
+
Build Guns.
+
Freedom On.
+
+
+
+
+
+
+
+ >
+ );
+}
+
+
+Footer.propTypes = {};
+
+export default Footer;
\ No newline at end of file
diff --git a/app/components/Footer/package.json b/app/components/Footer/package.json
new file mode 100644
index 0000000..21a0326
--- /dev/null
+++ b/app/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/app/components/Footer/styles.module.scss b/app/components/Footer/styles.module.scss
new file mode 100644
index 0000000..4ba7c1a
--- /dev/null
+++ b/app/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/app/components/Header/index.tsx b/app/components/Header/index.tsx
new file mode 100644
index 0000000..312c75e
--- /dev/null
+++ b/app/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 '@/app/lib/linkList/infoLinks';
+import sectionLinks from '@/app/lib/linkList/sectionLinks';
+
+export default class Header extends Component {
+ constructor(props) {
+ super(props)
+ this.state = {
+ }
+ }
+
+ render() {
+ return (
+
+ )
+ }
+}
+
+
+Header.propTypes = {
+
+};
diff --git a/app/components/Header/package.json b/app/components/Header/package.json
new file mode 100644
index 0000000..59ca336
--- /dev/null
+++ b/app/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/app/components/Header/styles.module.css b/app/components/Header/styles.module.css
new file mode 100644
index 0000000..31d426f
--- /dev/null
+++ b/app/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/app/components/Hero/index.tsx b/app/components/Hero/index.tsx
new file mode 100644
index 0000000..1d87420
--- /dev/null
+++ b/app/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}
+
+ {this.props.linktext}
+
+
+
+
+
+ );
+ }
+
+}
+
diff --git a/app/components/Hero/package.json b/app/components/Hero/package.json
new file mode 100644
index 0000000..aae57f5
--- /dev/null
+++ b/app/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/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/app/components/SignIn/index.tsx b/app/components/SignIn/index.tsx
new file mode 100644
index 0000000..ea40f94
--- /dev/null
+++ b/app/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 (
+
+
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/app/components/SignIn/package.json b/app/components/SignIn/package.json
new file mode 100644
index 0000000..a84a5b4
--- /dev/null
+++ b/app/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/app/components/SignIn/styles.module.css b/app/components/SignIn/styles.module.css
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/app/components/SignIn/styles.module.css
@@ -0,0 +1 @@
+
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/app/lib/constants.ts b/app/lib/constants.ts
new file mode 100644
index 0000000..999a6d9
--- /dev/null
+++ b/app/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/app/lib/linkList/infoLinks.js b/app/lib/linkList/infoLinks.js
new file mode 100644
index 0000000..bb5913b
--- /dev/null
+++ b/app/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/app/lib/linkList/sectionLinks.js b/app/lib/linkList/sectionLinks.js
new file mode 100644
index 0000000..1842770
--- /dev/null
+++ b/app/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/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 26fcde7..15186fa 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8,19 +8,31 @@
"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",
+ "@prisma/client": "^5.22.0",
+ "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",
+ "@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": {
@@ -35,6 +47,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 +187,523 @@
"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/@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",
@@ -103,6 +763,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 +1222,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 +1235,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 +1243,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 +1250,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 +2020,77 @@
"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/@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",
@@ -800,17 +2131,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 +2159,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 +2697,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 +2785,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 +2874,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 +2938,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 +2980,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 +3004,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 +3067,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 +3152,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 +3186,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",
@@ -1938,11 +3358,49 @@
"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",
"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
- "dev": true,
"engines": {
"node": ">=10"
},
@@ -2482,6 +3940,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 +3981,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 +4036,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 +4276,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 +4283,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 +4309,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 +4462,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 +4559,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 +4804,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 +4818,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 +4864,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 +5013,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 +5040,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 +5108,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 +5237,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 +5418,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 +5425,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 +5472,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 +5490,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",
@@ -4107,11 +5706,29 @@
"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",
"integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
- "dev": true,
"dependencies": {
"loose-envify": "^1.4.0",
"object-assign": "^4.1.1",
@@ -4148,29 +5765,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 +5849,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 +5872,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 +5897,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 +5995,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 +6145,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 +6401,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 +6488,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 +6568,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",
@@ -4957,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 61ec423..394eb62 100644
--- a/package.json
+++ b/package.json
@@ -9,18 +9,30 @@
"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",
+ "@prisma/client": "^5.22.0",
+ "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/node": "^20.17.6",
"@types/react": "^18",
"@types/react-dom": "^18",
- "postcss": "^8",
- "tailwindcss": "^3.4.1",
"eslint": "^8",
- "eslint-config-next": "15.0.3"
+ "eslint-config-next": "15.0.3",
+ "postcss": "^8",
+ "prisma": "^5.22.0",
+ "tailwindcss": "^3.4.1",
+ "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"]