diff --git a/.vscode/settings.json b/.vscode/settings.json index cda7cad..001de40 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,12 +2,18 @@ "typescript.tsdk": "node_modules/typescript/lib", "typescript.enablePromptUseWorkspaceTsdk": true, "workbench.colorCustomizations": { - "activityBar.background": "#083428", - "titleBar.activeBackground": "#0B4937", - "titleBar.activeForeground": "#F2FDFA" + "activityBar.background": "#9afde2", + "titleBar.activeBackground": "#e2fff7", + "titleBar.activeForeground": "#0f1010" }, "cSpell.words": [ "atencao", - "reasonslist" + "formik", + "mapadavida", + "mapjson", + "reasonslist", + "smoothstep", + "swipeable", + "Swipeable" ] } \ No newline at end of file diff --git a/app/(default)/layout.tsx b/app/(default)/layout.tsx index d0a2788..cc47d29 100644 --- a/app/(default)/layout.tsx +++ b/app/(default)/layout.tsx @@ -1,36 +1,14 @@ 'use client' -import { useEffect } from 'react' - -import AOS from 'aos' -import 'aos/dist/aos.css' - -import Footer from '@/components/ui/footer' - export default function DefaultLayout({ children, }: { children: React.ReactNode }) { - useEffect(() => { - AOS.init({ - once: true, - disable: 'phone', - duration: 700, - easing: 'ease-out-cubic', - }) - }) - return ( <> - - - {children} - - - - + {children} > ) } diff --git a/app/(default)/page.tsx b/app/(default)/page.tsx index 2aa8af7..3447345 100644 --- a/app/(default)/page.tsx +++ b/app/(default)/page.tsx @@ -1,14 +1,19 @@ -import React, { useEffect } from "react"; +import React from "react"; +import { redirect } from 'next/navigation'; export const metadata = { title: 'Home - Simple', description: 'Page description', } -import FlowContainer from '@/components/flowContainer' + +const RedirectComponent = ({ externalUrl }: any): null => { + redirect(externalUrl) +} export default async function Home({ params }: any) { + return ( - + ) -} +} \ No newline at end of file diff --git a/app/api/form-handler/route.ts b/app/api/form-handler/route.ts index 5eeb61c..94e1382 100644 --- a/app/api/form-handler/route.ts +++ b/app/api/form-handler/route.ts @@ -1,55 +1,16 @@ import { NextResponse, NextRequest } from "next/server"; -import crypto from 'crypto'; -import NodeCache from 'node-cache'; import { cleanString } from "@/utils/string-modeling"; import { saveMap } from "@/database/save-map"; // @ts-ignore import { v4 as uuidv4 } from 'uuid'; -import { getMapFromHash } from "@/database/get-map"; -const cache = new NodeCache(); -export async function GET(request: NextRequest, response: any) { - - const url = new URL(request.url); - const searchParams = new URLSearchParams(url.search); - const hash = searchParams.get("hash") - // const dados = cache.get(hash as string); - console.log(hash) - // const mockData = JSON.stringify({"firstName":"Ivan ","lastName":"Zichtl ","email":"izichtl@gmail.com","health":["Bom","Bom","Ruim"],"accept":"Sim","motivo":"OEOEOEOEOEOEOE"}) - // console.log(mockData) - const mapData = await getMapFromHash(hash as string) - console.log(mapData) - return new NextResponse(JSON.stringify(mapData) as string, { - status: 200, - }); - -} -// export async function PUT(request: NextRequest, response: any) { -// console.log('@@@@@@@@@@@@@@') -// const jsonData = { -// submission_id: '19191919191', -// } -// const resultOfDB = await saveMap(jsonData) -// console.log(resultOfDB) -// return new NextResponse('' as string, { -// status: 200, -// }); - -// } - -export async function POST(request: Request, response: any) { - console.log(process.env.DB_HOST) +export async function POST(request: Request) { const bodyData = await request.formData() // bodyData now contains body // TRANSFORMA EM ARRAY A KEYS PODENDO ITERAR SOBRE ELAS - const keysArray = Array.from(bodyData.keys()); - - const dataArry = keysArray.map((item: any) => { - const a = item.toString() - return { [a]: bodyData.get(item)} - }) - + // const keysArray = Array.from(bodyData.keys()); + console.log(bodyData) const submission_id = bodyData.get('submission_id') const fullName = bodyData.get('name') const email = bodyData.get('email') @@ -100,11 +61,14 @@ export async function POST(request: Request, response: any) { maps: [mindMap, bodyMap, spiritMap], reasons: reasons.filter((reason: any) => reason !== null), } + console.log(jsonData) const hash = uuidv4() const resultOfDB = await saveMap(jsonData, hash) console.log(resultOfDB) - return NextResponse.redirect(new URL(`/loading?hash=${hash}`, request.url)) + return NextResponse.redirect(`https://lifeflow.vercel.app/loading?hash=${hash}`, { + status: 301, + }); } diff --git a/app/api/map-handler/route.ts b/app/api/map-handler/route.ts new file mode 100644 index 0000000..fa78792 --- /dev/null +++ b/app/api/map-handler/route.ts @@ -0,0 +1,35 @@ +import { NextResponse, NextRequest } from "next/server"; +import { getMapFromHash } from "@/database/get-map"; +import { getMapFromUserData } from "@/database/get-maps"; + +export async function GET(request: NextRequest, response: any) { + const url = new URL(request.url); + const searchParams = new URLSearchParams(url.search); + const hash = searchParams.get("hash") + const mapData = await getMapFromHash(hash as string) + return new NextResponse(JSON.stringify(mapData) as string, { + status: 200, + }); +} + +export async function POST(request: Request, response: Response) { + const data = await request.json() + const mapData = await getMapFromUserData(data.day, data.mount, data.year, data.email) + if (mapData[0] === undefined) { + return new NextResponse(JSON.stringify({ + success: false, + data: ['no-data'] + }) as string, { + status: 200, + }); + } + return new NextResponse(JSON.stringify({ + success: true, + data: mapData + }) as string, { + status: 200, + }); + +} + + diff --git a/app/general-styles.ts b/app/general-styles.ts new file mode 100644 index 0000000..17272b1 --- /dev/null +++ b/app/general-styles.ts @@ -0,0 +1,14 @@ +import { PRIMARY_GRAY, PRIMARY_GREEN, SECONDARY_GRAY } from '@/utils/colors' +import styled from 'styled-components' + +export const StyledMain = styled.main` + display: flex; + flex-direction: column; + height: 100%; + flex-grow: 1; + padding: 0px 100px; + background-color: "#F8F8FF"; + @media (max-width: 768px) { + padding: 30px; + } +` diff --git a/app/layout.tsx b/app/layout.tsx index 7e4d3b6..116563d 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -1,35 +1,70 @@ +'use client' import './css/style.css' - -import { Inter } from 'next/font/google' - -import Header from '@/components/ui/header' +import { Oxygen, Noto_Serif } from 'next/font/google' +import StyleRegistry from './registry' import Banner from '@/components/banner' +import { ThemeProvider, createTheme } from '@mui/material/styles'; -const inter = Inter({ +const oxygen = Oxygen({ subsets: ['latin'], - variable: '--font-inter', - display: 'swap' + weight: ['300', '400','700'], + variable: '--font-oxygen', }) -export const metadata = { - title: 'Create Next App', - description: 'Generated by create next app', -} +const noto_Serif = Noto_Serif({ + subsets: ['latin'], + weight: ['400'], + variable: '--font-noto-Serif', +}) export default function RootLayout({ children, }: { children: React.ReactNode }) { + + + const theme = createTheme({ + palette: { + primary: { + main: '#018868', + }, + secondary: { + main: '#A52A2A', + }, + success: { + main: '#83C16C', + }, + error: { + main: '#D32F2F', + }, + warning: { + main: '#EF6C00', + }, + info: { + main: '#D32F2F', + }, + background: { + // @ts-ignore + default: '#E3E5E5', + }, + }, + }); + return ( - - - {/* */} - {children} - {/* */} - + + + + + {children} + + + + ) } + + diff --git a/app/loading/layout.tsx b/app/loading/layout.tsx index 245c9aa..cc47d29 100644 --- a/app/loading/layout.tsx +++ b/app/loading/layout.tsx @@ -1,36 +1,14 @@ 'use client' -import { useEffect } from 'react' - -import AOS from 'aos' -// import 'aos/dist/aos.css' - -import Footer from '@/components/ui/footer' - export default function DefaultLayout({ children, }: { children: React.ReactNode }) { - // useEffect(() => { - // AOS.init({ - // once: true, - // disable: 'phone', - // duration: 700, - // easing: 'ease-out-cubic', - // }) - // }) - return ( <> - {/* */} - - {children} - - {/* */} - - {/* */} + {children} > ) } diff --git a/app/loading/page.tsx b/app/loading/page.tsx index 65ff3f2..4ca68cb 100644 --- a/app/loading/page.tsx +++ b/app/loading/page.tsx @@ -5,16 +5,14 @@ export const metadata = { title: 'Home - Simple', description: 'Page description', } -import LoadingContainer from '@/components/loadingContainer' +import LoadingContainer from '@/components/LoadingContainer/loadingContainer' export default async function Home({ params }: any) { - return ( - Loading! ) diff --git a/app/map/layout.tsx b/app/map/layout.tsx index d0a2788..4f0c1cc 100644 --- a/app/map/layout.tsx +++ b/app/map/layout.tsx @@ -1,36 +1,25 @@ 'use client' - -import { useEffect } from 'react' - -import AOS from 'aos' -import 'aos/dist/aos.css' - -import Footer from '@/components/ui/footer' +import { useTheme } from '@mui/material/styles'; +import Footer from '@/components/Footer/index' +import { StyledMain } from '../general-styles' +import FrameHeader from '@/components/FramerHeader' +import { Container } from './style' export default function DefaultLayout({ children, }: { children: React.ReactNode }) { - - useEffect(() => { - AOS.init({ - once: true, - disable: 'phone', - duration: 700, - easing: 'ease-out-cubic', - }) - }) - + const theme = useTheme(); return ( - <> - - + + + {children} - - - + - > + ) } diff --git a/app/map/page.tsx b/app/map/page.tsx index 2aa8af7..54a4885 100644 --- a/app/map/page.tsx +++ b/app/map/page.tsx @@ -1,11 +1,11 @@ -import React, { useEffect } from "react"; +import React from "react"; export const metadata = { - title: 'Home - Simple', + title: 'Mapa da Vida', description: 'Page description', } -import FlowContainer from '@/components/flowContainer' +import FlowContainer from '@/components/FlowContainer' export default async function Home({ params }: any) { return ( diff --git a/app/map/style.ts b/app/map/style.ts new file mode 100644 index 0000000..42e0307 --- /dev/null +++ b/app/map/style.ts @@ -0,0 +1,10 @@ +import styled, { css } from 'styled-components' + + +export const Container = styled(styled.div``)` + padding: 0px; + ${props => props.background !== undefined && css` + background-color: ${props.background}; + `} +` + diff --git a/app/middleware.js b/app/middleware.js new file mode 100644 index 0000000..a724ad6 --- /dev/null +++ b/app/middleware.js @@ -0,0 +1,20 @@ +import { NextResponse } from "next/server"; + +export function middleware(request) { + // retrieve the current response + const res = NextResponse.next() + + // add the CORS headers to the response + res.headers.append('Access-Control-Allow-Credentials', "true") + res.headers.append('Access-Control-Allow-Origin', '*') // replace this your actual origin + res.headers.append('Access-Control-Allow-Methods', 'GET, DELETE, PATCH, POST, PUT, OPTIONS') + res.headers.append( + 'Access-Control-Allow-Headers', + 'X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version' + ) + return res +} + +export const config = { + matcher: '*', +} \ No newline at end of file diff --git a/app/registry.tsx b/app/registry.tsx new file mode 100644 index 0000000..95dd462 --- /dev/null +++ b/app/registry.tsx @@ -0,0 +1,34 @@ +'use client'; + +import React, { useState } from 'react'; +import { useServerInsertedHTML } from 'next/navigation'; +import { + ServerStyleSheet, + StyleSheetManager, +} from 'styled-components'; + +export default function StyledComponentsRegistry({ + children, +}: { + children: React.ReactNode; +}) { + // Only create stylesheet once with lazy initial state + // x-ref: https://reactjs.org/docs/hooks-reference.html#lazy-initial-state + const [styledComponentsStyleSheet] = useState( + () => new ServerStyleSheet() + ); + + useServerInsertedHTML(() => { + const styles = styledComponentsStyleSheet.getStyleElement(); + styledComponentsStyleSheet.instance.clearTag(); + return <>{styles}>; + }); + + if (typeof window !== 'undefined') return <>{children}>; + + return ( + + {children} + + ); +} \ No newline at end of file diff --git a/app/seu-mapa/layout.tsx b/app/seu-mapa/layout.tsx new file mode 100644 index 0000000..8e67663 --- /dev/null +++ b/app/seu-mapa/layout.tsx @@ -0,0 +1,22 @@ +'use client' + +import Footer from '@/components/Footer/index' +import { StyledMain } from '../general-styles' +import FrameHeader from '@/components/FramerHeader' + +export default function DefaultLayout({ + children, +}: { + children: React.ReactNode +}) { + + return ( + <> + + + {children} + + + > + ) +} diff --git a/app/seu-mapa/page.tsx b/app/seu-mapa/page.tsx new file mode 100644 index 0000000..1c41af4 --- /dev/null +++ b/app/seu-mapa/page.tsx @@ -0,0 +1,18 @@ + +import React from "react"; + +export const metadata = { + title: 'Mapa da Vida', + description: 'Page description', +} +import FlowContainer from '@/components/FlowContainer' +import MapForm from "@/components/MapForm"; +import MapListContainer from "@/components/MapListContainer"; + +export default async function Home({ params }: any) { + return ( + <> + + > + ) +} diff --git a/app/seu-mapa/style.ts b/app/seu-mapa/style.ts new file mode 100644 index 0000000..8872d54 --- /dev/null +++ b/app/seu-mapa/style.ts @@ -0,0 +1,9 @@ +import styled, { css } from 'styled-components' + + +export const Container = styled.div` + padding: 10px 64px; + width: 100%; + +` + diff --git a/components/Flow/CustomNode.tsx b/components/Flow/CustomNode.tsx index a343589..5de4bb3 100644 --- a/components/Flow/CustomNode.tsx +++ b/components/Flow/CustomNode.tsx @@ -1,5 +1,6 @@ import { memo, FC, CSSProperties } from 'react'; -import { Handle, Position, NodeProps, NodeResizer } from 'reactflow'; +import { Handle, Position, NodeProps } from 'reactflow'; +import { IconControl, NodeIconContainer, TextNode } from './style'; const sourceHandleStyleA: CSSProperties = { color: 'blue', @@ -7,23 +8,24 @@ const sourceHandleStyleA: CSSProperties = { border: '1px', }; -const CustomNode: FC = ({ data, xPos, yPos, color }) => { +const CustomNode: FC = ({ data }) => { return ( <> - - {data.label} - + + {data.icon} + {data.label} + diff --git a/components/Flow/Flow.module.css b/components/Flow/Flow.module.css index 614b053..a7805e5 100644 --- a/components/Flow/Flow.module.css +++ b/components/Flow/Flow.module.css @@ -1,11 +1,4 @@ -.flow { - /* flex-grow: 1; */ - font-size: 15px; - height: 500px; - width: 700px; - background-color: white; - /* border: 1px solid #555; */ -} + .customNode { border: 1px solid #555; @@ -14,6 +7,10 @@ width: 100px; border-radius: 30px; } +.dot { + width: 1px; + height: 1px; +} .customNeutral { border: 1px solid white; font-size: 10px; @@ -21,30 +18,47 @@ background-image: linear-gradient(62deg, #8EC5FC 0%, #E0C3FC 100%); padding: 8px; width: 100px; + height: 36px; border-radius: 30px; } -.customGood { +.customAreaNode { border: 1px solid white; font-size: 10px; - background-color: #bef264; + background-color: #5DADE2; padding: 8px; width: 100px; + height: 36px; + border-radius: 30px; +} +.customGood { + border: 1px solid white; + /* font-size: 20px; */ + background-color: #bef264; + padding: 0px 12px; + width: max-content; border-radius: 30px; } .customRegular { border: 1px solid white; - font-size: 10px; + /* font-size: 20px; */ background-color: #fef08a; - padding: 8px; - width: 100px; + padding: 0px 12px; + width: max-content; border-radius: 30px; } .customBad { border: 1px solid white; - font-size: 10px; + /* font-size: 20px; */ background-color: #fda4af; - padding: 8px; - width: 100px; + padding: 0px 12px; + width: max-content; + border-radius: 30px; +} +.customStatus { + border: 1px solid white; + /* font-size: 20px; */ + background-color: #bef264; + padding: 0px 12px; + width: max-content; border-radius: 30px; } - diff --git a/components/Flow/NodeArea.tsx b/components/Flow/NodeArea.tsx new file mode 100644 index 0000000..cc3ff7e --- /dev/null +++ b/components/Flow/NodeArea.tsx @@ -0,0 +1,36 @@ +import { memo, FC, CSSProperties } from 'react'; +import { Handle, Position, NodeProps } from 'reactflow'; +import { AreaIconControl, AreaNodeContainer, AreaNodeText, IconControl, NodeIconContainer, TextNode } from './style'; + +const sourceHandleStyleA: CSSProperties = { + color: 'blue', + backgroundColor: 'gray', + border: '1px', +}; + +const NodeArea: FC = ({ data }) => { + return ( + <> + + {data.icon} + + {data.label} + + + + + > + ); +}; + +export default memo(NodeArea); diff --git a/components/Flow/NodeStatus.tsx b/components/Flow/NodeStatus.tsx new file mode 100644 index 0000000..eae0bc4 --- /dev/null +++ b/components/Flow/NodeStatus.tsx @@ -0,0 +1,40 @@ +import { NODE_BAD, NODE_GOD, NODE_REGULAR } from '@/utils/colors'; +import { memo, FC, CSSProperties } from 'react'; +import { Handle, Position, NodeProps } from 'reactflow'; +import { NodeStyleContainer, StatusControl, StatusNodeText, TextNode } from './style'; + +const sourceHandleStyleA: CSSProperties = { + color: 'blue', + backgroundColor: 'gray', + border: '1px', +}; + +const statusColors = (i: any) => { + if(i === 'equilibrada' || i === 'Equilíbrio' ) return NODE_GOD + if(i === 'alerta' || i === 'Alerta') return NODE_REGULAR + if(i === 'atencao' || i === 'Atenção') return NODE_BAD +} + +const CustomNode: FC = ({ data }) => { + return ( + <> + + {data.label.toUpperCase()} + + + + > + ); +}; + +export default memo(CustomNode); diff --git a/components/Flow/NodeSubStatus.tsx b/components/Flow/NodeSubStatus.tsx new file mode 100644 index 0000000..0571c08 --- /dev/null +++ b/components/Flow/NodeSubStatus.tsx @@ -0,0 +1,42 @@ +import { NODE_BAD, NODE_GOD, NODE_REGULAR } from '@/utils/colors'; +import { memo, FC, CSSProperties } from 'react'; +import { Handle, Position, NodeProps } from 'reactflow'; +import { NodeStyleContainer, StatusBox, StatusControl, StatusNodeText, TextNode } from './style'; + +const sourceHandleStyleA: CSSProperties = { + color: 'blue', + backgroundColor: 'gray', + border: '1px', +}; + +const statusColors = (i: any) => { + if(i === 'equilibrada' || i === 'Equilíbrio' ) return NODE_GOD + if(i === 'alerta' || i === 'Alerta') return NODE_REGULAR + if(i === 'atencao' || i === 'Atenção') return NODE_BAD +} + +const statusText = (i: any) => { + if(i === 'equilibrada' || i === 'Equilíbrio' ) return 'Equilíbrio' + if(i === 'alerta' || i === 'Alerta') return 'Alerta' + if(i === 'atencao' || i === 'Atenção') return 'Atenção' +} + +const CustomNode: FC = ({ data }) => { + return ( + <> + + + {statusText(data.status)} + + + + > + ); +}; + +export default memo(CustomNode); diff --git a/components/Flow/index.tsx b/components/Flow/index.tsx index 0d49e94..075bee8 100644 --- a/components/Flow/index.tsx +++ b/components/Flow/index.tsx @@ -1,122 +1,223 @@ "use client" -import { useCallback, useEffect, useState } from 'react'; +import { useEffect, useState } from 'react'; import ReactFlow, { - Node, - Controls, - Background, - useNodesState, - useEdgesState, - addEdge, - Connection, Edge, ConnectionLineType, - ReactFlowProvider, - useReactFlow, - applyNodeChanges, - applyEdgeChanges, } from 'reactflow'; import CustomNode from './CustomNode'; +import NodeStatus from './NodeStatus'; +import NodeArea from './NodeArea'; +import NodeSubStatus from './NodeSubStatus'; import 'reactflow/dist/style.css'; import styles from './Flow.module.css'; -// import { Cabin_Sketch } from 'next/font/google'; +import { FlowContainer } from './style' +import { obterPrimeiroNome } from '../utils/data-format'; +import { NODE_AREA } from '@/utils/colors'; -// const teste = [ -// { -// title: 'Saúde', -// status: 'Neutro' -// }, -// { -// title: 'Saúde Mental', -// status: 'Bom' -// }, -// { -// title: 'Atividade Física', -// status: 'Regular' -// }, -// { -// title: 'Alimentação', -// status: 'Ruim' -// } -// ] -const createNodes = (arr: any) => { - const returnPosition = (i: any) => { - if(i === 0 ) return { x: 150 , y: 200 } - if(i === 1 ) return { x: 400 , y: 100 } - if(i === 2 ) return { x: 400 , y: 200 } - if(i === 3 ) return { x: 400 , y: 300 } +function Flow( { data, mind, body, spirit, isMobile }: any) { + + const [screenWidth, setScreenWidth] = useState(window.innerWidth) + const dimensionY = 100 + const dimensionX = (screenWidth - (128 + 150 + 10)) / 2 + + + const base: any = [ + { + id: 'base', + type: 'custom', + data: { label: obterPrimeiroNome(data.fullName).toUpperCase(), icon: '📍', invert: false }, + position: { x: dimensionX , y: dimensionY-50 }, + className: styles.customNeutral, + }, + { + id: '2', + type: 'area', + data: { label: 'MENTE', icon: '🧠', invert: false }, + position: { x: (dimensionX - 600) , y: (dimensionY + 250) }, + }, + { + id: '3', + type: 'area', + data: { label: 'CORPO', icon: '🏃🏻♀️', invert: false }, + position: { x: (dimensionX) , y: (dimensionY + 250) }, + }, + { + id: '4', + type: 'area', + data: { label: 'ESPÍRITO', icon: '🧘🏽', invert: false }, + position: { x: (dimensionX + 600) , y: (dimensionY + 250) }, + }, + ] + +const getMindNodes = (index: number, arr: any[], uniqueX: number, uniqueY: number) => { + if (index === 0){ + return { + id: '2-1', + type: 'status', + data: { label: arr[0], status: arr[1], invert: false, }, + position: { x: (uniqueX + 175) , y: (uniqueY + 250) }, + } } - const returnStyle = (i: any) => { - if(i === 'Neutro' ) return styles.customNeutral - if(i === 'Bom' ) return styles.customGood - if(i === 'Regular' ) return styles.customRegular - if(i === 'Ruim' ) return styles.customBad + if (index === 1){ + return { + id: '2-2', + type: 'status', + data: { label: arr[0], status: arr[1], invert: false }, + position: { x: (uniqueX) , y: (uniqueY + 250) }, + } } - return arr.map((item: any, i: number) => { - return { - id: (i+1).toString(), - type: 'custom', - data: { label: item.title }, - position: returnPosition(i), - className: returnStyle(item.status), + if (index === 2){ + return { + id: '2-3', + type: 'status', + data: { label: arr[0], status: arr[1], invert: false }, + position: { x: (uniqueX - 175) , y: (uniqueY + 250) }, } - }) + } +} +const getBodyNodes = (index: number, arr: any[], uniqueX: number, uniqueY: number) => { + if (index === 0){ + return { + id: '3-1', + type: 'status', + data: { label: arr[0], status: arr[1], invert: false }, + position: { x: (uniqueX + 175) , y: (uniqueY + 250) }, + } + } + if (index === 1){ + return { + id: '3-2', + type: 'status', + data: { label: arr[0], status: arr[1], invert: false }, + position: { x: (uniqueX) , y: (uniqueY + 250) }, + } + } + if (index === 2){ + return { + id: '3-3', + type: 'status', + data: { label: arr[0], status: arr[1], invert: false }, + position: { x: (uniqueX - 175) , y: (uniqueY + 250) }, + } + } +} +const getSpiritNodes = (index: number, arr: any[], uniqueX: number, uniqueY: number) => { + if (index === 0){ + return { + id: '4-1', + type: 'status', + data: { label: arr[0], status: arr[1], invert: false }, + position: { x: (uniqueX + 175) , y: (uniqueY + 250) }, + } + } + if (index === 1){ + return { + id: '4-2', + type: 'status', + data: { label: arr[0], status: arr[1], invert: false }, + position: { x: (uniqueX) , y: (uniqueY + 250) }, + } + } + if (index === 2){ + return { + id: '4-3', + type: 'status', + data: { label: arr[0], status: arr[1], invert: false }, + position: { x: (uniqueX - 175) , y: (uniqueY + 250) }, + } + } } +mind.forEach((item: any, index: number) => { + const node: any = getMindNodes(index, item, (base[1].position.x - 20), base[1].position.y) + base.push(node) + return +}) +body.forEach((item: any, index: number) => { + const node: any = getBodyNodes(index, item, (base[2].position.x - 20), base[2].position.y) + base.push(node) + return +}) + +spirit.forEach((item: any, index: number) => { + const node: any = getSpiritNodes(index, item, (base[3].position.x - 20), base[3].position.y) + base.push(node) + return +}) + const initialEdges: Edge[] = [ - { id: 'e1-2', source: '1', target: '2' }, - { id: 'e1-3', source: '1', target: '3' }, - { id: 'e1-4', source: '1', target: '4' }, + { id: '001', source: 'base', target: '2' }, + { id: '002', source: 'base', target: '3' }, + { id: '003', source: 'base', target: '4' }, + { id: '004', source: '4', target: '1' }, + { id: '005', source: '2', target: '2-1' }, + { id: '006', source: '2', target: '2-2' }, + { id: '007', source: '2', target: '2-3' }, + { id: '008', source: '3', target: '3-1' }, + { id: '009', source: '3', target: '3-2' }, + { id: '010', source: '3', target: '3-3' }, + { id: '011', source: '4', target: '4-1' }, + { id: '012', source: '4', target: '4-2' }, + { id: '013', source: '4', target: '4-3' }, + { id: '014', source: '2-1', target: '2-1-0' }, + { id: '014', source: '2-2', target: '2-2-0' }, + { id: '014', source: '2-3', target: '2-3-0' }, + { id: '014', source: '3-1', target: '3-1-0' }, + { id: '014', source: '3-2', target: '3-2-0' }, + { id: '014', source: '3-3', target: '3-3-0' }, + { id: '014', source: '4-1', target: '4-1-0' }, + { id: '014', source: '4-2', target: '4-2-0' }, + { id: '014', source: '4-3', target: '4-3-0' }, ]; const nodeTypes = { custom: CustomNode, + status: NodeStatus, + subStatus: NodeSubStatus, + area: NodeArea, }; const defaultEdgeOptions = { - animated: true, + animated: false, type: 'default', }; -function Flow( { dataArray }: any) { - console.debug(dataArray, 'chegada flow') - const aaa = createNodes(dataArray) - console.debug(aaa, 'edit flow') - const [nodes, setNodes, ] = useState(aaa); - // useEffect(() => { - // - // setNodes(aaa) - // console.log('efe1') - // },[nodes1]) - - useEffect(() => { - // console.debug(nodes, 'valor effect flow') - // onNodesChange(nodes) - },[nodes]) - - const onNodesChange = useCallback( - (changes: any) => setNodes((nds) => applyNodeChanges(changes, nds)), - [], - ); + useEffect(() => { + },[base]) + const n: any = base.map((e: any) => e) + base.forEach((element: any) => { + const date = ['2-1', '2-2', '2-3', '3-1', '3-2', '3-3', '4-1', '4-2', '4-3'] + const index = date.indexOf(element.id) + if (index !== -1) { + const nodeModel = { + id: `${element.id}-0`, + type: 'subStatus', + data: { label: element.data.status, status: element.data.status, invert: false }, + position: { x: element.position.x + 19 , y: element.position.y + 100 }, + } + n.push(nodeModel) + } + }) return ( - + - + ); } - export default Flow; diff --git a/components/Flow/style.ts b/components/Flow/style.ts new file mode 100644 index 0000000..c2b3d4e --- /dev/null +++ b/components/Flow/style.ts @@ -0,0 +1,98 @@ +import { NODE_AREA, NODE_SUBAREA } from '@/utils/colors' +import styled, { css } from 'styled-components' + +export const FlowContainer = styled.div` + display: flex; + flex-grow: 1; + height: 650px; + width: 100%; + margin: 0px; + @media (max-width: 768px) { + width: 100%; + height: 650px; + } +` + +// MAIN NODE STYLES +export const NodeIconContainer = styled.div` + display: flex; + position: relative; + justify-content: center; + align-items: center; + flex-direction: column; + top: -63px; +` +export const IconControl = styled.p` + font-size: 35px; + margin-bottom: 10px; +` +export const TextNode = styled.strong` + font-size: 13px; +` + +// AREA NODE STYLES +export const AreaNodeContainer = styled.div` + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + background-color: ${NODE_AREA}; + height: 36px; + width: 100px; + border-radius: 30px; +` +export const AreaIconControl = styled.p` + font-size: 35px; + width: 100%; + text-align: center; + margin-top: 5px; +` +export const AreaNodeText = styled.strong` + font-size: 13px; + color: #fff; + font-weight: 400; + letter-spacing: 1.2px; +` + +// STATUS NODE STYLES +export const NodeStyleContainer = styled.div` + width: 160px; + background-color: ${NODE_SUBAREA}; + padding: 15px; + border-radius: 5px; + height: 40px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +` +export const StatusNodeText = styled.strong` + position: relative; + font-size: 12px; + color: #fff; + letter-spacing: 1.1px; +` + + +export const StatusControl = styled(styled.p``)` + position: relative; + /* top: 4px; */ + font-size: 15px; + padding: 0px 15px; + font-weight: 600; + letter-spacing: 1.1px; + color: #fff; + text-align: center; +` +export const StatusBox = styled(styled.div``)` + padding: 0px 10px; + display: flex; + justify-content: center; + align-items: center; + width: 130px; + height: 40px; + border-radius: 10px; + ${props => props.statusColor && css` + background-color: ${props.statusColor}; + `} +` diff --git a/components/FlowContainer/index.tsx b/components/FlowContainer/index.tsx new file mode 100644 index 0000000..c74b6d9 --- /dev/null +++ b/components/FlowContainer/index.tsx @@ -0,0 +1,367 @@ +'use client' +import { useTheme } from '@mui/material/styles'; +import { useEffect, useState } from 'react' +import Tabs from '@mui/material/Tabs'; +import Tab from '@mui/material/Tab'; +import Box from '@mui/material/Box'; +import { useSearchParams } from 'next/navigation' +// @ts-ignore +import SwipeableViews from 'react-swipeable-views'; + + +import Flow from '@/components/Flow' +import { + ChipsContainer, + Container, + FormContainer, + InsightsContainer, + ModalTextContainer, + NewSearchButton, + NotSelectedReasonsChips, + ReasonsChips, + StyledBadge, + TabContainer, +} from './style' + +import { + PageSubtitle, + PageTitle, + SecondTitle +} from '../text-styles' +//@ts-ignore +import Modal from 'react-modal'; +import RectangularCard from '../InsightCard'; + +const returnHeight = (value: number, countData: number): string => { + if (value === 2) { + if (countData <= 3) return '450px' + if (countData > 3 && countData <= 6) return '480px' + if (countData > 6) return '650px' + } else { + return '300px' + } + return '' +} +const returnHeightMobile = (value: number, countData: number): string => { + if (value === 2) { + if (countData <= 3) return '750px' + if (countData > 3 && countData <= 6) return '750px' + if (countData > 6) return '750px' + } else { + return '300px' + } + return '' +} + +const customStyles = { + content: { + width: '95%', + top: '50%', + left: '50%', + right: 'auto', + bottom: 'auto', + marginRight: '-50%', + transform: 'translate(-50%, -50%)', + }, +}; + +const datas = [ + { + title: 'Rede de Apoio', + subtext: 'A construção de uma rede de apoio sólida é fundamental para o equilíbrio emocional e o bem-estar geral.', + area: 'Mente', + status: 'Atenção', + link: 'https://lucassoaresdc.notion.site/Rede-de-Apoio-0e927c59a89f4b98874fa3117f163fb6' + }, + { + title: 'Trabalho', + subtext: 'Alcançar equilíbrio na dimensão profissional é crucial para uma vida plena.', + area: 'Mente', + status: 'Atenção', + link: 'https://lucassoaresdc.notion.site/Trabalho-c972d31cfa6f4dc48f555c3d48f79948?pvs=25' + }, + { + title: 'Finanças', + subtext: 'Equilibrando a Dimensão Financeira: Um Guia para uma Vida Financeira Saudável', + area: 'Mente', + status: 'Atenção', + link: 'https://lucassoaresdc.notion.site/Finan-as-ddaf1c34e86d40fb8e417c083ff277cc?pvs=4' + }, + { + title: 'Exercício Físico', + subtext: 'A prática regular de exercícios físicos é vital para uma vida saudável e equilibrada.', + area: 'Corpo', + status: 'Atenção', + link: 'https://lucassoaresdc.notion.site/Exerc-cio-F-sico-df493ceb54864abf97c3206afaec3dca?pvs=25' + }, + { + title: 'Alimentação', + subtext: 'A alimentação desempenha um papel fundamental no bem-estar geral.', + area: 'Corpo', + status: 'Atenção', + link: 'https://lucassoaresdc.notion.site/Alimenta-o-285489a7c4d341c9845d8d4fae460a48', + }, + { + title: 'Hobbies', + subtext: 'Inserir hobbies na rotina diária é essencial para equilibrar o estresse e promover a satisfação pessoal.', + area: 'Corpo', + status: 'Atenção', + link: 'https://lucassoaresdc.notion.site/Hobbies-0b70d40e30754fa0ba387285a30af284?pvs=25' + }, + { + title: 'Propósito', + subtext: 'O propósito é a força motriz que dá significado à vida.', + area: 'Espírito', + status: 'Atenção', + link: 'https://lucassoaresdc.notion.site/Prop-sito-a98205e783fd4d4bab241e4c020ac869' + }, + { + title: 'Experiências', + subtext: 'A busca por experiências enriquecedoras é fundamental para criar uma vida plena.', + area: 'Espírito', + status: 'Atenção', + link: 'https://lucassoaresdc.notion.site/Experi-ncias-4f227439d202467285cf26a8672fabee' + }, + { + title: 'Tribo Correta', + subtext: 'A Tribo Correta refere-se a um círculo de relacionamentos próximos e significativos, composto por pessoas que compartilham valores', + area: 'Espírito', + status: 'Atenção', + link: 'https://lucassoaresdc.notion.site/Tribo-Correta-2560b06841494af2b0140bd2426de5a0' + } +] + + +export default function FlowContainer() { + const theme = useTheme(); + + const objectives = [ + "Organizar o dia a dia", + "Focar nos objetivos", + "Melhorar a saúde", + "Praticar exercícios", + "Melhorar a alimentação", + "Melhorar minhas finanças", + "Estar mais tempo com a família", + "Me dedicar a hobbies e projetos" + ] + const searchParams = useSearchParams() + const search = searchParams.get('hashData') + const [data, setData] = useState(null) + const [insights, setInsights] = useState(null) + const [modalIsOpen, setIsOpen] = useState(false); + const [value, setValue] = useState(0); + + const handleChange = (event: React.SyntheticEvent, newValue: number) => { + setValue(newValue as any); + }; + + const handleChangeIndex = (index: number) => { + setValue(index as any); + }; + + const screenLimit = 762 + let innerWidth: number = 0 + if (typeof window !== 'undefined') { + innerWidth = window.innerWidth + } + const [screenWidth, setScreenWidth] = useState(innerWidth) + let isMobile = screenWidth < screenLimit + + + useEffect(()=>{ + if (search !== null) { + const decodeString = decodeURIComponent(search as string) + const jsonString = atob(decodeString) + const jsonObject = JSON.parse(jsonString) + const userObject = JSON.parse(jsonObject.mapjson) + setData(userObject) + } + },[search]) + + + const handleWindowSizeChange = (): void => { + if (typeof window !== 'undefined') { + setScreenWidth(window.innerWidth) + isMobile = screenWidth < screenLimit + } + } + + + function filterArraysByKeyword(arrays: (string | string[])[][]): (string | string[])[][] { + return arrays.filter(subArray => subArray.some(item => Array.isArray(item) && item.includes('Atenção'))); +} + const modelingInsight = (data: any) => { + if (data !== null) { + const filteredArrays = filterArraysByKeyword(data.maps) + const filteredDatas = datas.filter((data) => { + let v = false + filteredArrays[0].forEach(array => { + if(data.title === array[0]) v = true + }) + return v + }) + setInsights(filteredDatas) + } +} + + + useEffect(() => { + window.addEventListener('resize', handleWindowSizeChange) + return () => { + window.removeEventListener('resize', handleWindowSizeChange) + } + }, []) + + useEffect(()=>{ + modelingInsight(data) + },[data]) + + function openModal() { + setIsOpen(true); + } + + function closeModal() { + setIsOpen(false); + } + + function a11yProps(index: number) { + return { + id: `full-width-tab-${index}`, + 'aria-controls': `full-width-tabpanel-${index}`, + }; + } + + const TabPanel = (props: any) => { + const { children, value, index, ...other } = props; + return ( + + {value === index && ( + + <>{children}> + + )} + + ); + } + const tabStyle = (value === 1 || value === 2) ? returnHeight(value, insights.length) : '750px' + const tabStyleMobile = (value === 1 || value === 2) ? returnHeightMobile(value, insights.length) : '750px' + + return ( + + {'Mapa da Vida'} + {'Veja áreas da sua vida. Trace planos. Priorize o que é importante'} + {data !== null && ( + <> + + + + + } iconPosition="end" /> + + + + + + + + + + + {data !== null && ( + objectives.map((item: any) => { + const index = data.reasons.indexOf(item) + return (<> + {index !== -1 && ( + {item} + )} + {index === -1 && ( + {item} + )} + > + ) + }) + + )} + + + + + {insights !== null && insights.map((item: any) => { + return ( + + ) + })} + + + + + + {'Vamos construir uma experiência útil?'} + {'Gostaríamos de entender qual foi a sua percepção sincera sobre a ferramenta?'} + Avaliar + + + {true && ( + //@ts-ignore + Loading… + )} + + Fechar + + + > + )} + ) +} + + diff --git a/components/FlowContainer/style.ts b/components/FlowContainer/style.ts new file mode 100644 index 0000000..86116dd --- /dev/null +++ b/components/FlowContainer/style.ts @@ -0,0 +1,179 @@ +import { NODE_AREA, PRIMARY_GRAY, SECONDARY_GRAY } from '@/utils/colors'; +import { Badge } from '@mui/material'; +import styled, { css } from 'styled-components' + + + +export const Container = styled(styled.div``)` + width: 100%; + display: flex; + flex-direction: column; + flex-grow: 1; + padding: 0px; + ${props => props.background !== undefined && css` + background-color: ${props.background}; + `} +` + +export const FormDivider = styled.div` + background-color: ${SECONDARY_GRAY}; + width: 100%; + height: 2px; + margin-top: 30px; + margin-bottom: 30px; + @media (max-width: 768px) { + margin-top: 20px; + margin-bottom: 20px; + } +`; + +export const ChipsContainer = styled.div` + display: flex; + flex-wrap: wrap; + flex-direction: row; + margin-bottom: 15px; +`; + +export const ModalTextContainer = styled.div` + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + width: 100%; + + margin-top: 30px; + padding: 10px; + margin-bottom: 30px; + border-radius: 10px; + background-color: rgb(228,238,225); +`; + +export const FormContainer = styled.div` + display: flex; + justify-content: center; + align-items: center; + width: 100%; + flex-wrap: wrap; + flex-direction: row; + margin-bottom: 30px; + background-color: rgb(228,238,225); +`; + +export const ReasonsChips = styled.div` + display: flex; + align-items: center; + justify-content: center; + width: max-content; + background-color: rgb(1, 136, 104); + height: 30px; + font-size: 14px; + padding-left: 14px; + padding-right: 14px; + border-radius: 50px; + opacity: 1; + margin: 5px 5px; + font-style: normal; + font-weight: 400; + color: #fff; + letter-spacing: 0; + text-transform: none; + text-decoration: none; + line-height: 1.2em; + text-align: start; + + @media (max-width: 768px) { + height: 24px; + font-size: 12px; + padding-left: 12px; + padding-right: 12px; + } +`; +export const NotSelectedReasonsChips = styled.div` + display: flex; + align-items: center; + justify-content: center; + width: max-content; + height: 30px; + font-size: 14px; + padding-left: 14px; + padding-right: 14px; + border-radius: 50px; + opacity: 1; + margin: 5px 5px; + font-style: normal; + font-weight: 400; + color: ${PRIMARY_GRAY}; + border: 1px solid ${PRIMARY_GRAY}; + letter-spacing: 0; + text-transform: none; + text-decoration: none; + line-height: 1.2em; + text-align: start; + + @media (max-width: 768px) { + height: 24px; + font-size: 12px; + padding-left: 12px; + padding-right: 12px; + } +`; + +export const NewSearchButton = styled.button` + display: flex; + width: 300px; + height: 40px; + padding: 14px 32px; + justify-content: center; + align-items: center; + gap: 16px; + flex-shrink: 0; + border-radius: 30px; + color: #FFF; + text-align: center; + font-size: 16px; + font-style: normal; + font-weight: 500; + line-height: 150%; /* 24px */ + letter-spacing: 0.08px; + background: ${NODE_AREA}; + margin: 20px auto; + cursor: pointer; + @media (max-width: 768px) { + width: 90%; + margin: 20px auto; + } +`; + + +export const TabContainer = styled.div` + height: 650px; + width: 100%; + margin-top: 10px; + @media (max-width: 768px) { + width: 100%; + height: 650px; + } +` +export const InsightsContainer = styled.div` + display: flex; + flex-wrap: wrap; + justify-content: flex-start; + flex-grow: 1; + gap: 1%; + width: 100%; + margin-top: 10px; + /* height: 400px; */ + @media (max-width: 768px) { + width: 100%; + flex-direction: column; + } +` + +export const StyledBadge = styled(Badge)(({ theme }) => ({ + '& .MuiBadge-badge': { + right: -4, + top: -8, + border: `0px solid none`, + padding: '0 0px', + }, +})); \ No newline at end of file diff --git a/components/Footer/index.tsx b/components/Footer/index.tsx new file mode 100644 index 0000000..9e1c181 --- /dev/null +++ b/components/Footer/index.tsx @@ -0,0 +1,24 @@ +"use client" +import { FooterWrapper, CompanyInfo, Copyright } from './styles' + +const Footer: React.FC = () => { + return ( + + + + + {'Copyright © 2023 '} + + {'Mapa da Vida'} + + + + + + ) +} + +export default Footer; \ No newline at end of file diff --git a/components/Footer/styles.ts b/components/Footer/styles.ts new file mode 100644 index 0000000..f8d008a --- /dev/null +++ b/components/Footer/styles.ts @@ -0,0 +1,37 @@ +import { DARK_GRAY, PRIMARY_GRAY, PRIMARY_GREEN, SECONDARY_GRAY } from '@/utils/colors' +import styled from 'styled-components' + +export const FooterWrapper = styled.footer` + background: ${DARK_GRAY}; + color: white; + box-sizing: border-box; + height: 60px; + display: flex; + justify-content: flex-start; + align-items: center; +` +export const CompanyInfo = styled.div` + display: flex; + flex-direction: column; + gap: 15px; + line-height: 20px; + @media (max-width: 768px) { + font-size: 12px; + } +` + +export const Copyright = styled.div` + display: flex; + justify-content: space-between; + padding: 3vh 12vw; + font-weight: 500; + font-size: 16px; + color: #FFF; + @media (max-width: 768px) { + flex-direction: column; + align-items: center; + justify-content: center; + text-align: center; + gap: 15px; + } +` \ No newline at end of file diff --git a/components/FramerHeader/index.tsx b/components/FramerHeader/index.tsx new file mode 100644 index 0000000..1c4d74b --- /dev/null +++ b/components/FramerHeader/index.tsx @@ -0,0 +1,78 @@ +"use client" +import React, { useState } from "react"; +import logo from "../../public/images/svg/logo.svg"; +import Image from "next/image"; +import { DivButton, HamburgerContainer, HamburgerIconContainer, HamburgerStripe, InsiderContainer, LogoBox, LogoContainer, LogoText, MenuContainer, MenuItem, NavContainer, Spacer } from "./styles"; +import MenuModal from "../MenuHamburger"; + +interface Props { + toggleTheme?(): void; +} + +const FrameHeader: React.FC = ({ toggleTheme }) => { + const [menuOpen, setMenuOpen] = useState(false); + + const handleMenuToggle = () => { + setMenuOpen(!menuOpen); + }; + + return ( + + + + + + + + {'mapadavida'} + + + + + + + Newsletter + + + + + Meus Mapas + + + + + Crie seu mapa + + + + + {/* */} + {/* */} + + + {/* */} + + + + + + ); +}; + +export default FrameHeader; diff --git a/components/FramerHeader/styles.ts b/components/FramerHeader/styles.ts new file mode 100644 index 0000000..d970355 --- /dev/null +++ b/components/FramerHeader/styles.ts @@ -0,0 +1,142 @@ +import styled from "styled-components"; + +export const NavContainer = styled.nav` + display: flex; + align-items: center; + border-bottom-width: 1px; + border-color: rgba(0, 0, 0, 0.07); + border-left-width: 0px; + border-right-width: 0px; + border-style: solid; + border-top-width: 0px; + background-color: rgb(255, 255, 255); + width: 100%; + opacity: 1; + height: 64px; + padding: 20px 55px; + @media (max-width: 768px) { + height: 60px; + padding: 20px 30px; + } +`; +export const InsiderContainer = styled.nav` + width: 100%; + height: 36px; + display: flex; + flex-direction: row; + + @media (max-width: 768px) { + height: 36px; + } +`; + +export const LogoBox = styled.div` + width: 36px; + height: 36px; + margin-right: 10px; + @media (max-width: 768px) { + width: 36px; + height: 36px; + } +`; +export const LogoContainer = styled.a` + display: flex; + align-items: center; + justify-content: center; + flex-direction: row + width: 150px; + height: 36px; + @media (max-width: 768px) { + width: 150px; + height: 36px; + } +`; +export const LogoText = styled.p` + font-style: normal; + font-weight: 600; + color: #333; + font-size: 16px; + letter-spacing: 0; + text-transform: none; + text-decoration: none; + line-height: 1.2em; + text-align: start; + @media (max-width: 768px) { + font-size: 16px; + } +`; + +export const Spacer = styled.div` + flex-grow: 1; + @media (max-width: 768px) { + } +`; +export const MenuContainer = styled.div` + display: flex; + align-items: center; + justify-content: center; + flex-direction: row + width: max-content; + height: 36px; + @media (max-width: 768px) { + } +`; + +export const MenuItem = styled.p` + font-style: normal; + font-weight: 500; + color: #000; + font-size: 16px; + letter-spacing: 0; + text-transform: none; + text-decoration: none; + line-height: 1.2em; + text-align: start; + margin-right: 20px; + @media (max-width: 768px) { + font-size: 12px; + display: none; + } +`; +export const DivButton = styled.div` + display: flex; + align-items: center; + justify-content: center; + width: 140px; + height: 36px; + background-color: rgb(1, 136, 104); + border-radius: 50px; + opacity: 1; + padding: 0px 15px; + font-style: normal; + font-weight: 400; + color: #fff; + font-size: 16px; + letter-spacing: 0; + text-transform: none; + text-decoration: none; + line-height: 1.2em; + text-align: start; + + @media (max-width: 768px) { + display: none; + } +`; + +export const HamburgerIconContainer = styled.div` + display: none; + @media (max-width: 768px) { + display: flex; + justify-content: center; + flex-direction: column; + align-items: center; + cursor: pointer; + } +`; + +export const HamburgerStripe = styled.div` + width: 20px; + height: 2px; + margin-bottom:8px; + background-color: gray; +`; \ No newline at end of file diff --git a/components/InsightCard/index.tsx b/components/InsightCard/index.tsx new file mode 100644 index 0000000..c0d2fc0 --- /dev/null +++ b/components/InsightCard/index.tsx @@ -0,0 +1,40 @@ +import React from 'react'; +import { BottomDiv, CardContainer, SubText, Title, TopDiv } from './styles' +import { Chip } from '@mui/material'; + +const RectangularCard: any = ({ + title, + subtext, + area, + status, + link +}: any ) => { + return ( + + + + {title} + + + + + + + + {subtext} + + + + + ); +}; + +export default RectangularCard; diff --git a/components/InsightCard/styles.ts b/components/InsightCard/styles.ts new file mode 100644 index 0000000..c1351d8 --- /dev/null +++ b/components/InsightCard/styles.ts @@ -0,0 +1,57 @@ +import styled from 'styled-components'; + +// Estilos do componente +export const CardContainer = styled.div` + width: 340px; + min-width: 340px; + height: 165px; + padding: 16px; + display: flex; + flex-direction: column; + border-radius: 4px; + background: #FFF; + box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.20), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12); + margin-bottom: 20px; + margin-left: 20px; + @media (max-width: 768px) { + margin-left: 0px; + } +`; + +export const TopDiv = styled.div` + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 10px; +`; + +export const Title = styled.h3` + color: var(--text-primary, rgba(0, 0, 0, 0.87)); + font-family: var(--font-oxygen); + font-size: 20px; + font-style: normal; + font-weight: 400; + line-height: 160%; /* 32px */ + letter-spacing: 0.15px; +`; + +export const SubText = styled.h3` + color: var(--text-secondary, rgba(0, 0, 0, 0.60)); + font-family: var(--font-noto-Serif); + font-size: 16px; + font-style: normal; + font-weight: 400; + line-height: 150%; /* 24px */ + letter-spacing: 0.15px; +`; + +export const Chip = styled.div` + color: #fff; + padding: 5px 10px; + border-radius: 5px; + margin-left: 5px; +`; + +export const BottomDiv = styled.div` + flex: 1; +`; \ No newline at end of file diff --git a/components/LoadingContainer/loadingContainer.tsx b/components/LoadingContainer/loadingContainer.tsx new file mode 100644 index 0000000..abdc6df --- /dev/null +++ b/components/LoadingContainer/loadingContainer.tsx @@ -0,0 +1,88 @@ +'use client' +import { useEffect, useState } from 'react' +import { useSearchParams } from 'next/navigation' +import { redirect } from 'next/navigation' +import axios from 'axios' +import LoadingBar from 'react-top-loading-bar'; +import { LoadingText } from './styles'; + +export default function LoadingContainer() { + + const searchParams = useSearchParams() + const search = searchParams.get('hash') + const [userData, setUserData] = useState(null) + const [base64Data, setBase64Data] = useState('') + + const [progress, setProgress] = useState(0); + const [loadMsg, setLoadMsg] = useState('Transferindo seus dados'); + + async function getStaticProps() { + try { + const response = await axios.get(`/api/map-handler?hash=${search}`) + + const data = response.data; + return data + } catch (error) { + console.error('Erro ao buscar dados:', error); + return { + data: { + success: false, + }, + }; + } + } + + const updateLoading = (percent: number, msg: string) => { + setProgress(percent) + setLoadMsg(msg) + } + + const lazyLoading = () => { + setTimeout(()=> updateLoading(10, 'Transferindo seus dados'), 800) + setTimeout(()=> updateLoading(40, 'Processando as informações'), 1600) + setTimeout(()=> updateLoading(65, 'Construindo seu mapa'), 3200) + setTimeout(()=> updateLoading(100, 'Finalizando'), 4800) + } + + const handleNavigate = () => { + const jsonString = JSON.stringify(userData); + const base64String = btoa(jsonString); // Base64 encoding to avoid special characters + const encodedBase64String = encodeURIComponent(base64String); + setBase64Data(encodedBase64String) + lazyLoading() + }; + + const navigateUser = () => { + redirect(`/map?hashData=${base64Data}`) + }; + + useEffect(()=>{ + const fetchData = async () => { + const data = await getStaticProps().then(r=> r) + setUserData(data) + }; + fetchData() + }, [search]) + + useEffect(()=>{ + if (userData !== null) { + handleNavigate() + } + }, [userData]) + + useEffect(()=>{ + if (progress === 100) { + navigateUser() + } + }, [progress]) + + return ( + <> + + {loadMsg}! + > + ) +} diff --git a/components/LoadingContainer/styles.ts b/components/LoadingContainer/styles.ts new file mode 100644 index 0000000..6197ca5 --- /dev/null +++ b/components/LoadingContainer/styles.ts @@ -0,0 +1,10 @@ +import styled from "styled-components"; +import { PRIMARY_GRAY, PRIMARY_GREEN } from "@/utils/colors"; + +export const LoadingText = styled.strong` + font-size: 17px; + color: ${PRIMARY_GRAY} + @media (max-width: 768px) { + font-size: 14px; + } +`; diff --git a/components/MapForm/index.tsx b/components/MapForm/index.tsx new file mode 100644 index 0000000..74090cd --- /dev/null +++ b/components/MapForm/index.tsx @@ -0,0 +1,160 @@ +'use client' +import React from 'react'; +import axios from 'axios' +import { useRouter } from 'next/navigation'; + +// @ts-ignore +import { useFormik } from 'formik'; +import * as Yup from 'yup'; +import { CellContainer, FormEmailContainer, ErrorMsg ,NameField, StyledForm, DayContainer, MountContainer, YearContainer, FormBirthContainer, StyledInput, SearchButton, ButtonsContainer, CancelButton } from './styles'; + +const MapForm = ({ setMapList }:any) => { + const router = useRouter() + async function getUserMaps(payload: any) { + try { + const response = await axios.post(`/api/map-handler`, payload) + const data = response.data; + return data + } catch (error) { + console.error('Erro ao buscar dados:', error); + return { + data: { + success: false, + }, + }; + } + } + + const navigateUser = () => { + formik.setErrors({}) + router.replace('/') + }; + + const validationSchema = Yup.object().shape({ + email: Yup.string() + .email('Email inválido') + .required('Requirido'), + day: Yup.string() + .min(2, 'Poucos dígitos') + .max(2, 'Muito longo') + .required('Requirido') + .matches( + /^[0-9]+$/, + 'Insira apenas números' + ), + mount: Yup.string() + .min(2, 'Poucos dígitos') + .max(2, 'Muito longo') + .required('Requirido') + .matches( + /^[0-9]+$/, + 'Insira apenas números' + ), + year: Yup.string() + .min(4, 'Poucos dígitos') + .max(4, 'Muito longo') + .required('Requirido') + .matches( + /^[0-9]+$/, + 'Insira apenas números' + ), + }); + + const formik = useFormik({ + initialValues: { + email: '', + day: '', + mount: '', + year: '', + }, + validationSchema: validationSchema, + onSubmit: async (values: any) => { + const userMapsResponse = await getUserMaps(JSON.stringify(values)) + // console.debug('resposta', userMapsResponse); + setMapList(userMapsResponse) + }, + }); + + return ( + + + + Email: + + {formik.touched.email && formik.errors.email ? ( + {formik.errors.email as string} + ) : null} + + + + + + Dia: + + {formik.touched.day && formik.errors.day ? ( + {formik.errors.day as string} + ) : null} + + + + + + Mês: + + {formik.touched.mount && formik.errors.mount ? ( + {formik.errors.mount as string} + ) : null} + + + + + + Ano: + + {formik.touched.year && formik.errors.year ? ( + {formik.errors.year as string} + ) : null} + + + + + {'Voltar'} + {'Buscar'} + + + ); +}; + +export default MapForm; diff --git a/components/MapForm/styles.ts b/components/MapForm/styles.ts new file mode 100644 index 0000000..eee6d1e --- /dev/null +++ b/components/MapForm/styles.ts @@ -0,0 +1,134 @@ +// modalStyles.tsx +import styled, {css} from "styled-components"; +// @ts-ignore +import Modal from "react-modal"; +import { NODE_AREA, PRIMARY_ERROR, PRIMARY_GRAY, PRIMARY_GREEN, SECONDARY_BLUE, SECONDARY_GRAY } from "@/utils/colors"; + +export const StyledForm = styled(styled.form``)` + display: flex; + width: 100%; + margin: 0 auto; + flex-direction: column; +`; +export const FormEmailContainer = styled(styled.div``)` + display: flex; + /* height: 200px; */ + width: 500px; + @media (max-width: 768px) { + width: 100%; + } + `; +export const DayContainer = styled(styled.div``)` + width: 25%; + `; +export const MountContainer = styled(styled.div``)` + width: 25%; + `; +export const YearContainer = styled(styled.div``)` + width: 50%; + `; +export const FormBirthContainer = styled(styled.div``)` + display: flex; + flex-direction: row; + width: 500px; + height: 110px; + @media (max-width: 768px) { + width: 100%; + } +`; +export const CellContainer = styled.div` + display: flex; + justify-content: flex-start; + flex-direction: column; + padding: 5px; + height: 110px; + width: 100%; +`; + +export const NameField = styled(styled.label``)` + color: ${PRIMARY_GRAY}; + font-family: var(--font-noto-Serif); + font-size: 15px; + font-weight: 500; +`; +export const ErrorMsg = styled(styled.div``)` + color: ${PRIMARY_ERROR}; + font-size: 12px; + font-weight: 500; +`; +export const StyledInput = styled(styled.input``)` + color: ${PRIMARY_GRAY}; + border-radius: 5px; + border: 1px solid ${PRIMARY_GRAY}; + font-size: 14px; + font-weight: 500; + ${props => props.error && css` + border: 1px solid ${PRIMARY_ERROR}; + `} +`; + +export const ButtonsContainer = styled.div` + display: flex; + justify-content: center; + flex-direction: row; + padding: 5px; + height: 110px; + width: 500px; + @media (max-width: 768px) { + width: 100%; + } +`; + +export const SearchButton = styled.button` + display: flex; + width: 240px; + height: 52px; + padding: 14px 32px; + justify-content: center; + align-items: center; + gap: 16px; + flex-shrink: 0; + border-radius: 30px; + color: #FFF; + text-align: center; + font-size: 16px; + font-style: normal; + font-weight: 500; + line-height: 150%; + letter-spacing: 0.08px; + background: ${NODE_AREA}; + cursor: pointer; + margin:5px; + @media (max-width: 768px) { + width: 50%; + margin:5px; + } +`; + +export const CancelButton = styled.button` + display: flex; + width: 240px; + height: 52px; + padding: 14px 32px; + justify-content: center; + align-items: center; + gap: 16px; + flex-shrink: 0; + border-radius: 30px; + border: 1px solid ${SECONDARY_GRAY}; + color: ${SECONDARY_GRAY}; + text-align: center; + font-size: 16px; + font-style: normal; + font-weight: 500; + line-height: 150%; /* 24px */ + letter-spacing: 0.08px; + background: ${SECONDARY_BLUE}; + cursor: pointer; + margin:5px; + @media (max-width: 768px) { + width: 50%; + /* max-width: 50%; */ + margin:5px; + } +`; \ No newline at end of file diff --git a/components/MapHeader/index.tsx b/components/MapHeader/index.tsx new file mode 100644 index 0000000..eef104d --- /dev/null +++ b/components/MapHeader/index.tsx @@ -0,0 +1,12 @@ +"use client" +import { MapHeaderContainer } from './styles' + +const MapHeader: React.FC = () => { + return ( + + Copyright © 2023 Soares & Zichtl - Todos os direitos reservados + + ) +} + +export default MapHeader; \ No newline at end of file diff --git a/components/MapHeader/styles.ts b/components/MapHeader/styles.ts new file mode 100644 index 0000000..292dfd3 --- /dev/null +++ b/components/MapHeader/styles.ts @@ -0,0 +1,42 @@ +import { PRIMARY_GRAY, PRIMARY_GREEN, SECONDARY_GRAY } from '@/utils/colors' +import styled from 'styled-components' + + +export const MapHeaderContainer = styled.div` + display: flex; + /* flex-grow: 1; */ + height: max-content; + padding-top: 16px; + padding-bottom: 16px; + /* background: ${PRIMARY_GREEN}; + color: white; + border-top: 5px solid ${SECONDARY_GRAY}; + box-sizing: border-box; + margin-top: 100px; */ +` + +export const CompanyInfo = styled.div` + display: flex; + flex-direction: column; + gap: 15px; + line-height: 20px; + @media (max-width: 768px) { + font-size: 12px; + } +` + +export const Copyright = styled.div` + display: flex; + justify-content: space-between; + padding: 3vh 12vw; + font-weight: 400; + font-size: 16px; + color: ${PRIMARY_GRAY}; + @media (max-width: 768px) { + flex-direction: column; + align-items: center; + justify-content: center; + text-align: center; + gap: 15px; + } +` \ No newline at end of file diff --git a/components/MapListContainer/index.tsx b/components/MapListContainer/index.tsx new file mode 100644 index 0000000..544cf58 --- /dev/null +++ b/components/MapListContainer/index.tsx @@ -0,0 +1,96 @@ +'use client' +import { useEffect, useState } from 'react' +import MapForm from '../MapForm'; +import { + FormContainer, + MainContainer, + NewSearchButton, + NoDataContainer, + NoDataText, +} from './styles'; +import { + FormDivider, + PageSubtitle, + PageTitle, +} from '../text-styles'; +// import MapsTable from '../MapsTable'; +import { redirect } from 'next/navigation' + +const startTitle = 'Busca de Mapas' +const startSubtitle = 'Informe seu email e sua data de nascimento para buscar seus mapas da vida!' +const startMapData = { + success: false, + data: [] +} + +export default function MapListContainer() { + const screenLimit = 762 + let innerWidth: number = 0 + if (typeof window !== 'undefined') { + innerWidth = window.innerWidth + } + const [screenWidth, setScreenWidth] = useState(innerWidth) + let isMobile = screenWidth < screenLimit + + const [mapList, setMapList] = useState(startMapData) + const [title, setTitle] = useState(startTitle) + const [subtitle, setSubTitle] = useState(startSubtitle) + + const handleWindowSizeChange = (): void => { + if (typeof window !== 'undefined') { + setScreenWidth(window.innerWidth) + isMobile = screenWidth < screenLimit + } + } + + const cleanSearch = () => { + setTitle(startTitle) + setSubTitle(startSubtitle) + setMapList(startMapData) + } + + useEffect(() => { + window.addEventListener('resize', handleWindowSizeChange) + return () => { + window.removeEventListener('resize', handleWindowSizeChange) + } + }, []) + + useEffect(()=>{ + + if(mapList.success) { + const lastIndex = mapList.data.length + const lastMap = mapList.data[lastIndex-1] + redirect(`/loading?hash=${lastMap.hash}`) + // setTitle('Listagem de mapas cadastrados') + // setSubTitle('Veja os seus mapas. Compare versões e acompanhe seu progresso.') + } + },[mapList] ) + + return ( + + {title} + {subtitle} + + {/* {(mapList.success && mapList.data[0] !== undefined) && ( + <> + + {'Nova Busca'} + > + )} */} + {(!mapList.success && mapList.data[0] === undefined) && ( + + + + )} + {(!mapList.success && mapList.data[0] !== undefined) && ( + + {'Não foram encontrados mapas com os dados informados, Tente novamente!'} + {'Nova Busca'} + + )} + + ) +} diff --git a/components/MapListContainer/styles.ts b/components/MapListContainer/styles.ts new file mode 100644 index 0000000..4cd1342 --- /dev/null +++ b/components/MapListContainer/styles.ts @@ -0,0 +1,75 @@ +import { NODE_AREA, PRIMARY_GRAY, PRIMARY_GREEN, SECONDARY_GRAY } from "@/utils/colors"; +import styled from "styled-components"; + +export const MainContainer = styled(styled.div``)` + padding: 0px 12vh; + @media (max-width: 768px) { + padding: 0px 2vh; + } + +`; + +export const FormContainer = styled(styled.div``)` + display: flex; + height: 200px; + width: 100%; + +`; +export const ListOfMapsContainer = styled(styled.div``)` + display: flex; + flex-direction: column; + /* height: 200px; */ + width: 100%; +`; +export const StyledTR = styled(styled.tr``)` + height: 50px; +`; + +export const NewSearchButton = styled.button` + display: flex; + width: 379px; + height: 52px; + padding: 14px 32px; + justify-content: center; + align-items: center; + gap: 16px; + flex-shrink: 0; + border-radius: 30px; + color: #FFF; + text-align: center; + font-size: 16px; + font-style: normal; + font-weight: 500; + line-height: 150%; /* 24px */ + letter-spacing: 0.08px; + background: ${NODE_AREA}; + margin: 20px auto; + cursor: pointer; + @media (max-width: 768px) { + width: 90%; + margin: 20px auto; + } +`; + +export const NoDataContainer = styled(styled.div``)` + display: flex; + justify-content: flex-start; + flex-direction: column; + width: 100%; +`; + +export const NoDataText = styled.p` + color: ${PRIMARY_GRAY}; + font-size: 18px; + font-style: normal; + font-weight: 500; + line-height: normal; + font-family: var(--font-noto-Serif); + margin: 7px 5px; + @media (max-width: 768px) { + font-size: 15px; + font-style: normal; + font-weight: 400; + line-height: normal; + } +`; \ No newline at end of file diff --git a/components/MapsTable/index.tsx b/components/MapsTable/index.tsx new file mode 100644 index 0000000..837bac6 --- /dev/null +++ b/components/MapsTable/index.tsx @@ -0,0 +1,205 @@ +'use client' +import React, { FC, ReactElement, useEffect, useState } from 'react' +// import Icon from '../icon' +// import { PRIMARY_BLUE_03 } from '../utils/dash-colors' +import { + ActionTH, + EmailTH, + ButtonIconBox, DataActionTH, + DataNameTH, DataTH, MainContainer, MobileBox, MobileButtonBox, MobileButtonIconBox, MobileContainer, MobileDivider, MobileUpperBox, MobileVerticalDivider, NameTH, RegistrationTH, Spacer, StrongText, StyledDataTR, StyledTable, StyledThead, StyledTR, TextBox, UpperDataText, DataDateTH, DataEmailTH, THtext } from './styles' +import Image from "next/image"; +import logo from "../../public/images/svg/logo.svg"; +import { converterFormatoData } from '../utils/data-format'; + + +const accountData = [ + { + id: 8437, + nationalRegistration: '110.659.947-02', + accountOwner: 'Ivan Zichtl Santos', + agency: '1234', + accountNumber: '56789', + accountDigit: '0', + accountType: 'ccorrente', + accountIdentifier: 'CONTA TESTE IVAN99', + bank: '075', + bankName: 'Banco ABN AMRO S.A.' + }, + { + id: 8439, + nationalRegistration: '111.222.222-332', + accountOwner: 'Ivan Teste Edit AccountXXX', + agency: '1234299', + accountNumber: '56789', + accountDigit: '0', + accountType: 'ccorrente', + accountIdentifier: 'TESTE PUT REQUEST', + bank: '025', + bankName: 'Banco Alfa S.A.' + }, + { + id: 8442, + nationalRegistration: '05.311.244/0001-09', + accountOwner: 'Ivan Zichtl Santos', + agency: '1234299', + accountNumber: '1012101', + accountDigit: null, + accountType: 'ccorrente', + accountIdentifier: 'CONTA PUT TESTE SETTIMEOUT', + bank: '024', + bankName: 'Banco BANDEPE S.A.' + }, + { + id: 8439, + nationalRegistration: '111.222.222-332', + accountOwner: 'Ivan Teste Edit AccountXXX', + agency: '1234299', + accountNumber: '56789299X', + accountDigit: '0', + accountType: 'ccorrente', + accountIdentifier: 'TESTE PUT REQUEST', + bank: '025', + bankName: 'Banco Alfa S.A.' + }, + { + id: 8442, + nationalRegistration: '05.311.244/0001-09', + accountOwner: 'Ivan Zichtl Santos', + agency: '1234299', + accountNumber: '1012101', + accountDigit: '0', + accountType: 'ccorrente', + accountIdentifier: 'CONTA PUT TESTE SETTIMEOUT', + bank: '024', + bankName: 'Banco BANDEPE S.A.' + }, + { + id: 8439, + nationalRegistration: '111.222.222-332', + accountOwner: 'Ivan Teste Edit AccountXXX', + agency: '1234299', + accountNumber: '56789299X', + accountDigit: null, + accountType: 'ccorrente', + accountIdentifier: 'TESTE PUT REQUEST', + bank: '025', + bankName: 'Banco Alfa S.A.' + }, + { + id: 8442, + nationalRegistration: '05.311.244/0001-09', + accountOwner: 'Ivan Zichtl Santos', + bank: '024', + bankName: 'Banco BANDEPE S.A.', + agency: '1234299', + accountType: 'ccorrente', + accountNumber: '1012101', + accountDigit: '0', + accountIdentifier: 'CONTA PUT TESTE SETTIMEOUT' + } +] + + + +const TabelaDados = ({ data }: any) => { + return ( + + + + NOME + EMAIL + DATA + + + + + {data.map((item: any) => { + const userData = JSON.parse(item.mapjson) + return ( + + + + {userData.fullName} + + + {userData.email} + {`${converterFormatoData(item.data)} - ${item.data.slice(11, 16)}`} + {/* {`${converterFormatoData(item.data)} - ${item.data.slice(14, 19)}`} */} + + + ACESSAR + + + + + ) + })} + + + ); +}; + +export interface IInitalAddValues { + id: number + birth: string + data: string + email: string + hash: string + agency: string + mapjson: string + submission_id: string +} + +export interface InputProps { + data: IInitalAddValues[] + isMobile: boolean +} + +const MapsTable: FC = ( + { data, isMobile } +): ReactElement => { + + // console.debug(isMobile) + + return ( + + { isMobile && ( + + {data.map((item: any, index: any) => { + const userData = JSON.parse(item.mapjson) + return ( + + + + + {userData.fullName} + {userData.email} + {item.data} + + + + + + {'Acessar'} + + + + + + ) + })} + + )} + { !isMobile && ( + + )} + + ) +} + +export default MapsTable diff --git a/components/MapsTable/styles.tsx b/components/MapsTable/styles.tsx new file mode 100644 index 0000000..898b523 --- /dev/null +++ b/components/MapsTable/styles.tsx @@ -0,0 +1,261 @@ +import styled from 'styled-components' +// import { DASHCOLORS } from '..' +import { NODE_AREA, PRIMARY_GRAY, PRIMARY_GREEN, } from "@/utils/colors"; + +export const MainContainer = styled(styled.div``)` +` + +// MOBILE VERSION +// +// +export const MobileContainer = styled(styled.div``)` + width: 100%; + display: flex; + flex-direction: column; +` + +export const MobileBox = styled(styled.div``)` + width: 100%; + border-radius: 5px; + border: 1px solid ${PRIMARY_GRAY}; + background: #FFF; + padding-bottom: 16px; + margin-bottom: 16px; +` + +export const MobileUpperBox = styled(styled.div``)` + width: 100%; + padding: 16px 16px; + padding-bottom: 0px; + display: flex; + flex-direction: row; +` + +export const MobileBottomBox = styled(styled.div``)` + padding: 0px 16px; + margin-bottom: 16px; + display: flex; + flex-direction: row; + justify-content: center; + align-items: space-between; +` + +export const MobileButtonBox = styled(styled.div``)` + display: flex; + justify-content: flex-end; + align-items: flex-start; +` + +export const StrongText = styled(styled.p``)` + color: ${PRIMARY_GRAY}; + font-size: 14px; + font-style: normal; + font-weight: 700; + line-height: 10.6px; +` +export const UpperDataText = styled(styled.p``)` + color: ${PRIMARY_GRAY}; + font-size: 12px; + font-style: normal; + font-weight: 400; + line-height: 13.6px; + margin-top: 7px; +` +export const BottomDataText = styled(styled.p``)` + color: ${PRIMARY_GREEN}; + font-size: 10px; + font-style: normal; + font-weight: 400; + line-height: 13.6px; +` + +export const TextBox = styled(styled.div``)` + display: flex; + flex-direction: column; + justify-content: flex-start; +` + +export const MobileButtonIconBox = styled(styled.button``)` + border-radius: 30px; + background-color: ${NODE_AREA}; + display: flex; + width: max-content; + height: 36px; + padding: 10px; + justify-content: center; + align-items: center; + gap: 10px; + flex-shrink: 0; + margin-left: 6px; + cursor: pointer; + color: #fff; + font-size: 11px; + font-style: normal; + font-weight: 700; + line-height: 10.6px; +` +export const MobileDivider = styled.div` + height: 1px; + margin: 0px 16px; + margin-top: 10px; + margin-bottom: 16px; + border-top: 1px solid ${PRIMARY_GREEN}; +` + +export const MobileVerticalDivider = styled.div` + background-color: ${PRIMARY_GREEN}; + height: 12px; + width: 1px; + margin: 0px 16px; + +` + +export const Spacer = styled(styled.div``)` + flex-grow: 1; +` + +// DESKTOP VERSION +// +// +const nameWidth: string = '30%' +const cpfWidth: string = '25%' +const bankWidth: string = '25%' +const actionWidth: string = '20%' + +export const Container = styled(styled.div``)` + height: 100%; +` + +export const StyledTable = styled(styled.table``)` + display: flex; + flex-direction: column; + width: 100%; + margin-bottom: 24px; +` + +export const StyledThead = styled(styled.thead``)` + display: flex; + width: 100%; +` + +export const StyledTR = styled(styled.tr``)` + display: flex; + width: 100%; + height: 30px; +` + +export const StyledDataTR = styled(styled.tr``)` + display: flex; + width: 100%; + height: 40px; +` + +export const BaseStyleTH = styled(styled.th``)` + display: flex; + justify-content: flex-start; + align-items: center; + padding-left: 17px; + color: ${PRIMARY_GRAY}; + font-size: 14px; + font-style: normal; + font-weight: 600; + line-height: 19.6px; +` + +export const NameTH = styled(BaseStyleTH)` + width: ${nameWidth}; +` +export const EmailTH = styled(BaseStyleTH)` + width: ${cpfWidth}; +` +export const DataTH = styled(BaseStyleTH)` + width: ${bankWidth}; +` +export const ActionTH = styled(BaseStyleTH)` + width: ${actionWidth}; +` + +export const BaseDataTH = styled(styled.th``)` + align-items: center; + background-color: #fff; + margin-top: 16px; + margin-bottom: 16px; + color: ${PRIMARY_GRAY}; + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: 19.6px; + height: 22px; +` +export const THtext = styled.div` + display: flex; + justify-content: flex-start; + width: 100%; +` + +export const DataNameTH = styled(BaseDataTH)` + width: ${nameWidth}; + display: flex; + justify-content: center; + padding-left: 17px; + border-right: 1px solid ${PRIMARY_GRAY}; + text-align: left; +` + +export const DataEmailTH = styled(BaseDataTH)` + width: ${cpfWidth}; + display: flex; + justify-content: center; + padding-left: 17px; + border-right: 1px solid ${PRIMARY_GRAY}; + border-left: 1px solid ${PRIMARY_GRAY}; +` + +export const DataDateTH = styled(BaseDataTH)` + width: ${bankWidth}; + display: flex; + justify-content: center; + padding-left: 17px; + border-right: 1px solid ${PRIMARY_GRAY}; + border-left: 1px solid ${PRIMARY_GRAY}; +` + +export const DataActionTH = styled(BaseDataTH)` + width: ${actionWidth}; + display: flex; + justify-content: flex-end; + flex-direction: row; + border-left: 1px solid ${PRIMARY_GRAY}; +` + +export const ButtonIconBox = styled(styled.button``)` + border-radius: 85px; + border: 1px solid ${PRIMARY_GRAY}; + background-color: ${NODE_AREA}; + display: flex; + width: max-content; + height: 36px; + padding: 10px; + /* padding-top: 16px; */ + justify-content: center; + align-items: center; + gap: 10px; + flex-shrink: 0; + margin-left: 6px; + cursor: pointer; + color: #fff; + font-size: 11px; + font-style: normal; + font-weight: 700; + line-height: 10.6px; +` + +export const LogoBox = styled.div` + width: 36px; + height: 36px; + margin-right: 10px; + @media (max-width: 768px) { + width: 36px; + height: 36px; + } +`; diff --git a/components/MenuHamburger/index.tsx b/components/MenuHamburger/index.tsx new file mode 100644 index 0000000..807c041 --- /dev/null +++ b/components/MenuHamburger/index.tsx @@ -0,0 +1,50 @@ +import React from "react"; +import { CustomModal, MenuItems, MenuItem, DivButton } from "./styles"; + +interface MenuModalProps { + isOpen: boolean; + onRequestClose: () => void; +} + +const MenuModal: React.FC = ({ isOpen, onRequestClose }) => { + return ( + + + + + Newsletter + + + + + Meus Mapas + + + + + Crie seu mapa + + + + + ); +}; + +export default MenuModal; diff --git a/components/MenuHamburger/styles.tsx b/components/MenuHamburger/styles.tsx new file mode 100644 index 0000000..7a73428 --- /dev/null +++ b/components/MenuHamburger/styles.tsx @@ -0,0 +1,62 @@ +// modalStyles.tsx +import styled from "styled-components"; +// @ts-ignore +import Modal from "react-modal"; + +export const CustomModal = styled(Modal)` + position: fixed; + top: 94px; + background-color: #fff;; + border: none; + padding: 20px; + width: 239px; + height: 100%; + max-width: 90%; + outline: none; + @media (max-width: 768px) { + top: 63px; + } +`; + +export const MenuItems = styled.div` + display: flex; + flex-direction: column; +`; + +export const MenuItem = styled.p` + font-style: normal; + font-weight: 500; + color: #000; + font-size: 16px; + letter-spacing: 0; + text-transform: none; + text-decoration: none; + line-height: 1.2em; + text-align: start; + margin-bottom: 20px; + @media (max-width: 768px) { + font-size: 14px; + } +`; +export const DivButton = styled.div` + display: flex; + align-items: center; + justify-content: center; + width: 140px; + height: 36px; + background-color: rgb(1, 136, 104); + border-radius: 50px; + opacity: 1; + padding: 0px 15px; + font-style: normal; + font-weight: 400; + color: #fff; + font-size: 16px; + letter-spacing: 0; + text-transform: none; + text-decoration: none; + line-height: 1.2em; + text-align: start; + @media (max-width: 768px) { + } +`; \ No newline at end of file diff --git a/components/StyleRegistry.tsx b/components/StyleRegistry.tsx new file mode 100644 index 0000000..656b812 --- /dev/null +++ b/components/StyleRegistry.tsx @@ -0,0 +1,22 @@ +'use client' +import React, { useState } from 'react' +import { useServerInsertedHTML } from 'next/navigation' +import { StyleRegistry, createStyleRegistry } from 'styled-jsx' + +export default function StyledJsxRegistry({ + children, +}: { + children: React.ReactNode +}) { + // Only create stylesheet once with lazy initial state + // x-ref: https://reactjs.org/docs/hooks-reference.html#lazy-initial-state + const [jsxStyleRegistry] = useState(() => createStyleRegistry()) + + useServerInsertedHTML(() => { + const styles = jsxStyleRegistry.styles() + jsxStyleRegistry.flush() + return <>{styles}> + }) + + return {children} +} \ No newline at end of file diff --git a/components/banner.tsx b/components/banner.tsx index bce6b72..3d1c09d 100644 --- a/components/banner.tsx +++ b/components/banner.tsx @@ -9,9 +9,21 @@ export default function Banner() { return ( <> {bannerOpen && ( - + - Download on GitHub or Check Premium Version + + {'Acesse nossa comunidade no'} + + + {'Whatsapp'} + + setBannerOpen(false)}> Close diff --git a/components/flowContainer.tsx b/components/flowContainer.tsx deleted file mode 100644 index c7a202f..0000000 --- a/components/flowContainer.tsx +++ /dev/null @@ -1,127 +0,0 @@ -'use client' - -import { useEffect, useState } from 'react' -import { useSearchParams } from 'next/navigation' - -import axios from 'axios' -import Flow from '@/components/Flow' - -const baseData = [ - { - title: 'Saúde', - status: 'Neutro' - }, -] -const baseTag = ['Saúde Mental', 'Atividade Física', 'Alimentação'] -const teste = [ - { - title: 'Saúde', - status: 'Neutro' - }, - { - title: 'Saúde Mental', - status: 'Bom' - }, - { - title: 'Atividade Física', - status: 'Regular' - }, - { - title: 'Alimentação', - status: 'Ruim' - } -] - -const mock = { - accept:"Sim", - email:"aizichtl@gmail.com", - firstName:"12121212", - health:['Bom', 'Bom', 'Bom'], - lastName:"12121", - motivo: "1212121212121" -} -// http://localhost:3000/loading?hash=79d7b993-d1ee-480f-b568-2bf61dc2ba66 -export default function FlowContainer() { - const searchParams = useSearchParams() - const search = searchParams.get('hashData') - if (search !== null) { - const decodeString = decodeURIComponent(search as string) - const jsonString = atob(decodeString) - const jsonObject = JSON.parse(jsonString) - console.debug(jsonObject) - } - const [nodeData, setNodeData] = useState([]) - const [userData, setUserData] = useState(null) - - - - - async function getStaticProps() { - try { - const response = await axios.get(`http://localhost:3000/api/form-handler?hash=${search}`) - .then(r=>r) - console.debug(response, 'request') - - const data = response.data; - return data - } catch (error) { - console.error('Erro ao buscar dados:', error); - return { - data: { - success: false, - }, - }; - } - } - - useEffect(()=>{ - // getStaticProps().then(r=>setUserData(r)) - // console.debug(data, 'return') - // setUserData(userData) - },[search]) - - - useEffect(()=>{ - if (userData !== null ){ - - baseTag.forEach((item, index) => { - if (baseData.length >= 4) return - baseData.push( - { - title: item, - status: userData.health[index] - }, - ) - }) - // console.debug(baseData, '@') - setNodeData(baseData) - // console.debug(userData, 'effect') - // console.debug(userData.health, 'effect') - } - - },[userData]) - - // useEffect(()=>{ - // },[nodeData]) - // console.debug(baseData, 'render') - return ( - <> - { userData !== null && ( - - - {userData.firstName} {userData.lastName} - {userData.email} - {'Não esqueça porque está aqui!'} - {userData.motivo} - - { - nodeData.length > 1 && ( - - ) - } - - )} - >) -} \ No newline at end of file diff --git a/components/loadingContainer.tsx b/components/loadingContainer.tsx deleted file mode 100644 index 6fda20b..0000000 --- a/components/loadingContainer.tsx +++ /dev/null @@ -1,97 +0,0 @@ -'use client' -import ReactLoading from 'react-loading'; -import { useEffect, useState } from 'react' -import { useSearchParams } from 'next/navigation' -import { useRouter } from 'next/router'; -import { redirect } from 'next/navigation' - - -import axios from 'axios' - -export default function LoadingContainer() { - - const searchParams = useSearchParams() - const search = searchParams.get('hash') - // const router = useRouter(); - - const [userData, setUserData] = useState(null) - - // alert(search) - - - async function getStaticProps() { - try { - const response = await axios.get(`/api/form-handler?hash=${search}`) - - const data = response.data; - return data - } catch (error) { - console.error('Erro ao buscar dados:', error); - return { - data: { - success: false, - }, - }; - } - } - - const handleNavigate = () => { - const jsonString = JSON.stringify(userData); - const base64String = btoa(jsonString); // Base64 encoding to avoid special characters - console.debug(base64String) - const encodedBase64String = encodeURIComponent(base64String); - - redirect(`/map?hashData=${encodedBase64String}`) - // router.push({ - // pathname: '/', - // query: { data: base64String }, // Pass the data in the query parameter - // }, undefined, { scroll: false }); - }; - - useEffect(()=>{ - const fetchData = async () => { - const data = await getStaticProps().then(r=> r) - console.debug(data) - setUserData(data) - }; - fetchData() - // setUserData(userData) - }, [search]) - useEffect(()=>{ - if (userData !== null) { - alert('renderizou') - handleNavigate() - } - }, [userData]) - - return ( - - ) -} - - - -// const YourComponent = () => { - -// const handleNavigate = () => { -// const dataToSend = { /* your data here */ }; -// const queryString = new URLSearchParams(dataToSend).toString(); - -// router.push({ -// pathname: '/dashboard', -// search: queryString, -// }, undefined, { scroll: false }); -// }; - -// return ( -// -// Navigate to Dashboard with Data -// -// ); -// }; - -// export default YourComponent; \ No newline at end of file diff --git a/components/reactframflow.tsx b/components/reactframflow.tsx deleted file mode 100644 index 032c08d..0000000 --- a/components/reactframflow.tsx +++ /dev/null @@ -1,59 +0,0 @@ -"use client" -import { useState, useCallback } from 'react'; -import ReactFlow, { - Controls, - Background, - applyNodeChanges, - applyEdgeChanges, -} from 'reactflow'; -import 'reactflow/dist/style.css'; - -const initialNodes = [ - { - id: '1', - data: { label: 'Hello' }, - position: { x: 0, y: 0 }, - type: 'input', - }, - { - id: '2', - data: { label: 'World' }, - position: { x: 100, y: 100 }, - }, -]; - -const initialEdges = [ - { id: '1-2', source: '1', target: '2', label: 'to the', type: 'step' }, -]; - -function Flow() { - const [nodes, setNodes] = useState(initialNodes); - const [edges, setEdges] = useState(initialEdges); - - const onNodesChange = useCallback( - (changes) => setNodes((nds) => applyNodeChanges(changes, nds)), - [], - ); - const onEdgesChange = useCallback( - (changes) => setEdges((eds) => applyEdgeChanges(changes, eds)), - [], - ); - - return ( - {/* */} - - - - - - ); -} - -export default Flow; diff --git a/components/text-styles.tsx b/components/text-styles.tsx new file mode 100644 index 0000000..e49ff3d --- /dev/null +++ b/components/text-styles.tsx @@ -0,0 +1,63 @@ +import { LIGHT_GRAY, NODE_AREA, PRIMARY_GRAY, PRIMARY_GREEN, SECONDARY_GRAY } from "@/utils/colors"; +import styled from "styled-components"; + +export const PageTitle = styled.h4` + color: ${PRIMARY_GRAY}; + font-family: var(--font-oxygen); + font-size: 36px; + font-style: normal; + font-weight: 700; + line-height: normal; + margin-top: 40px; + margin-bottom: 19px; + @media (max-width: 768px) { + font-size: 28px; + font-style: normal; + font-weight: 600; + line-height: 22px; /* 110% */ + margin-top: 27px; + margin-bottom: 13px; + line-height: 140%; + } + `; + +export const PageSubtitle = styled.p` + color: ${PRIMARY_GRAY}; + font-size: 16px; + font-style: normal; + font-weight: 400; + line-height: normal; + font-family: var(--font-noto-Serif); + @media (max-width: 768px) { + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: normal; + line-height: 140%; + } +`; + +export const SecondTitle = styled.h4` + color: ${PRIMARY_GRAY}; + font-size: 32px; + font-style: normal; + font-weight: 700; + line-height: 35.2px; /* 110% */ + margin-bottom: 19px; + @media (max-width: 768px) { + font-size: 24px; + font-style: normal; + font-weight: 600; + line-height: 22px; /* 110% */ + margin-bottom: 13px; + } + `; + +export const FormDivider = styled.div` + background-color: ${LIGHT_GRAY}; + width: 100%; + height: 2px; + margin: 27px 0px; + @media (max-width: 768px) { + } +`; diff --git a/components/theme/index.tsx b/components/theme/index.tsx new file mode 100644 index 0000000..e69de29 diff --git a/components/ui/footer.tsx b/components/ui/footer.tsx deleted file mode 100644 index 06afbd6..0000000 --- a/components/ui/footer.tsx +++ /dev/null @@ -1,149 +0,0 @@ -import Logo from './logo' - -export default function Footer() { - return ( - - ) -} diff --git a/components/utils/data-format.ts b/components/utils/data-format.ts new file mode 100644 index 0000000..de3c5a1 --- /dev/null +++ b/components/utils/data-format.ts @@ -0,0 +1,22 @@ +export function obterPrimeiroNome(frase: string): string { + // Dividir a frase em partes usando o espaço como delimitador + const partesDaFrase: string[] = frase.split(' '); + + // Retornar o primeiro elemento do array, que é o primeiro nome + const primeiroNome: string = partesDaFrase[0]; + + return primeiroNome; + } + + + export function converterFormatoData(dataString: string): string { + const dataObj = new Date(dataString); + + const dia = String(dataObj.getUTCDate()).padStart(2, '0'); + const mes = String(dataObj.getUTCMonth() + 1).padStart(2, '0'); // Adicionando 1, pois os meses começam do zero + const ano = dataObj.getUTCFullYear(); + + const dataFormatada = `${dia}/${mes}/${ano}`; + + return dataFormatada; + } \ No newline at end of file diff --git a/database/get-maps.ts b/database/get-maps.ts new file mode 100644 index 0000000..b281cec --- /dev/null +++ b/database/get-maps.ts @@ -0,0 +1,21 @@ +import db_con from './conection' + +export const getMapFromUserData = async (day: string, mount: string, year: string, email: string) => { + try { + const query = ` + SELECT * FROM life_map_vA WHERE birth = $1 AND email = $2 + ` + const values = [ + `${day}/${mount}/${year}`, + email, + ] + const client = await db_con.connect() + const result = await client.query( + query, + values + ); + client.release() + return result.rows + } catch ( error ) { + console.log( error ) + }}; diff --git a/next.config.js b/next.config.js index e88d4b7..e4dec3a 100644 --- a/next.config.js +++ b/next.config.js @@ -1,15 +1,40 @@ /** @type {import('next').NextConfig} */ const nextConfig = { + experimental: { + allowMiddlewareResponseBody: true + }, reactStrictMode: true, swcMinify: true, - async rewrites() { + // async rewrites() { + // return [ + // { + // source: '/', + // destination: '/landing.html', + // } + // ] + // }, + async headers() { return [ { - source: '/', - destination: '/html/index.html', - } + // matching all API routes + source: "/api/:path*", + headers: [ + { key: "Access-Control-Allow-Credentials", value: "true" }, + { key: "Access-Control-Allow-Origin", value: "*" }, // replace this your actual origin + { key: "Access-Control-Allow-Methods", value: "GET,DELETE,PATCH,POST,PUT" }, + { key: "Access-Control-Allow-Headers", value: "X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version" }, + ] + }, ] - } + }, + typescript: { + // !! WARN !! + // Dangerously allow production builds to successfully complete even if + // your project has type errors. + // !! WARN !! + ignoreBuildErrors: true, + }, + } module.exports = nextConfig diff --git a/package-lock.json b/package-lock.json index 135bfbc..6e5bb3e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,19 +10,25 @@ "dependencies": { "@headlessui/react": "^1.7.14", "@types/node": "^20.2.5", + "@types/pg": "^8.10.9", "@types/react": "^18.2.7", "@types/react-dom": "^18.2.4", "aos": "^3.0.0-beta.6", + "axios": "^1.6.2", "mermaid": "^10.6.1", "next": "^13.4.4", "node-cache": "^5.1.2", + "pg": "^8.11.3", "react": "^18.2.0", "react-dom": "18.2.0", + "react-loading": "^2.0.3", "react-markdown": "^9.0.1", "reactflow": "^11.10.1", "rehype-raw": "^7.0.0", "remark-gfm": "^4.0.0", + "supports-color": "^8.1.1", "typescript": "^5.0.4", + "uuid": "^9.0.1", "zustand": "^4.4.6" }, "devDependencies": { @@ -671,6 +677,16 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.2.tgz", "integrity": "sha512-Vvycsc9FQdwhxE3y3DzeIxuEJbWGDsnrxvMADzTDF/lcdR9/K+AQIeAghTQsHtotg/q0j3WEOYS/jQgSdWue3w==" }, + "node_modules/@types/pg": { + "version": "8.10.9", + "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.10.9.tgz", + "integrity": "sha512-UksbANNE/f8w0wOMxVKKIrLCbEMV+oM1uKejmwXr39olg4xqcfBDbXxObJAt6XxHbDa4XTKOlUEcEltXDX+XLQ==", + "dependencies": { + "@types/node": "*", + "pg-protocol": "*", + "pg-types": "^4.0.1" + } + }, "node_modules/@types/prop-types": { "version": "15.7.8", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.8.tgz", @@ -744,6 +760,11 @@ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", "dev": true }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, "node_modules/autoprefixer": { "version": "10.4.16", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", @@ -781,6 +802,16 @@ "postcss": "^8.1.0" } }, + "node_modules/axios": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", + "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, "node_modules/bail": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", @@ -859,6 +890,14 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/buffer-writer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", + "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==", + "engines": { + "node": ">=4" + } + }, "node_modules/busboy": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", @@ -978,6 +1017,17 @@ "node": ">=0.8" } }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/comma-separated-tokens": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", @@ -1537,6 +1587,14 @@ "robust-predicates": "^3.0.0" } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", @@ -1678,6 +1736,38 @@ "node": ">=8" } }, + "node_modules/follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fraction.js": { "version": "4.3.6", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.6.tgz", @@ -1762,6 +1852,14 @@ "node": ">= 0.4.0" } }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, "node_modules/hast-util-from-parse5": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz", @@ -6321,6 +6419,25 @@ "node": ">=8.6" } }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/mini-svg-data-uri": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", @@ -6472,7 +6589,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" } @@ -6486,6 +6602,11 @@ "node": ">= 6" } }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -6495,6 +6616,11 @@ "wrappy": "1" } }, + "node_modules/packet-reader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", + "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" + }, "node_modules/parse5": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", @@ -6521,6 +6647,149 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "node_modules/pg": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.11.3.tgz", + "integrity": "sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==", + "dependencies": { + "buffer-writer": "2.0.0", + "packet-reader": "1.0.0", + "pg-connection-string": "^2.6.2", + "pg-pool": "^3.6.1", + "pg-protocol": "^1.6.0", + "pg-types": "^2.1.0", + "pgpass": "1.x" + }, + "engines": { + "node": ">= 8.0.0" + }, + "optionalDependencies": { + "pg-cloudflare": "^1.1.1" + }, + "peerDependencies": { + "pg-native": ">=3.0.1" + }, + "peerDependenciesMeta": { + "pg-native": { + "optional": true + } + } + }, + "node_modules/pg-cloudflare": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz", + "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==", + "optional": true + }, + "node_modules/pg-connection-string": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.2.tgz", + "integrity": "sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==" + }, + "node_modules/pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pg-numeric": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pg-numeric/-/pg-numeric-1.0.2.tgz", + "integrity": "sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/pg-pool": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.1.tgz", + "integrity": "sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==", + "peerDependencies": { + "pg": ">=8.0" + } + }, + "node_modules/pg-protocol": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz", + "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==" + }, + "node_modules/pg-types": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-4.0.1.tgz", + "integrity": "sha512-hRCSDuLII9/LE3smys1hRHcu5QGcLs9ggT7I/TCs0IE+2Eesxi9+9RWAAwZ0yaGjxoWICF/YHLOEjydGujoJ+g==", + "dependencies": { + "pg-int8": "1.0.1", + "pg-numeric": "1.0.2", + "postgres-array": "~3.0.1", + "postgres-bytea": "~3.0.0", + "postgres-date": "~2.0.1", + "postgres-interval": "^3.0.0", + "postgres-range": "^1.1.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/pg/node_modules/pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "dependencies": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pg/node_modules/postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/pg/node_modules/postgres-bytea": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pg/node_modules/postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pg/node_modules/postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "dependencies": { + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pgpass": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "dependencies": { + "split2": "^4.1.0" + } + }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -6686,6 +6955,57 @@ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true }, + "node_modules/postgres-array": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-3.0.2.tgz", + "integrity": "sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog==", + "engines": { + "node": ">=12" + } + }, + "node_modules/postgres-bytea": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-3.0.0.tgz", + "integrity": "sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==", + "dependencies": { + "obuf": "~1.1.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/postgres-date": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-2.0.1.tgz", + "integrity": "sha512-YtMKdsDt5Ojv1wQRvUhnyDJNSr2dGIC96mQVKz7xufp07nfuFONzdaowrMHjlAzY6GDLd4f+LUHHAAM1h4MdUw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/postgres-interval": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-3.0.0.tgz", + "integrity": "sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/postgres-range": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/postgres-range/-/postgres-range-1.1.3.tgz", + "integrity": "sha512-VdlZoocy5lCP0c/t66xAfclglEapXPCIVhqqJRncYpvbCgImF0w67aPKfbqUMr72tO2k5q0TdTZwCLjPTI6C9g==" + }, + "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==", + "peer": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, "node_modules/property-information": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.4.0.tgz", @@ -6695,6 +7015,11 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -6738,6 +7063,21 @@ "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==", + "peer": true + }, + "node_modules/react-loading": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/react-loading/-/react-loading-2.0.3.tgz", + "integrity": "sha512-Vdqy79zq+bpeWJqC+xjltUjuGApyoItPgL0vgVfcJHhqwU7bAMKzysfGW/ADu6i0z0JiOCRJjo+IkFNkRNbA3A==", + "peerDependencies": { + "prop-types": "^15.6.0", + "react": ">=0.14.0" + } + }, "node_modules/react-markdown": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-9.0.1.tgz", @@ -7483,6 +7823,14 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "engines": { + "node": ">= 10.x" + } + }, "node_modules/streamsearch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", @@ -7548,6 +7896,20 @@ "node": ">=8" } }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", @@ -7969,6 +8331,14 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, "node_modules/yaml": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz", diff --git a/package.json b/package.json index 87a5eab..b189f2f 100644 --- a/package.json +++ b/package.json @@ -9,26 +9,41 @@ "lint": "next lint" }, "dependencies": { + "@emotion/react": "^11.11.3", + "@emotion/styled": "^11.11.0", + "@fontsource/roboto": "^5.0.8", "@headlessui/react": "^1.7.14", + "@mui/icons-material": "^5.15.5", + "@mui/material": "^5.15.5", + "@mui/styled-engine-sc": "^6.0.0-alpha.12", "@types/node": "^20.2.5", "@types/pg": "^8.10.9", "@types/react": "^18.2.7", "@types/react-dom": "^18.2.4", "aos": "^3.0.0-beta.6", "axios": "^1.6.2", + "cors": "^2.8.5", + "formik": "^2.4.5", "mermaid": "^10.6.1", - "next": "^13.4.4", + "next": "^13.2.4", "node-cache": "^5.1.2", "pg": "^8.11.3", "react": "^18.2.0", "react-dom": "18.2.0", "react-loading": "^2.0.3", "react-markdown": "^9.0.1", + "react-modal": "^3.16.1", + "react-swipeable-views": "^0.14.0", + "react-top-loading-bar": "^2.3.1", "reactflow": "^11.10.1", "rehype-raw": "^7.0.0", "remark-gfm": "^4.0.0", + "styled-components": "^6.1.8", + "styled-jsx": "^5.1.2", + "supports-color": "^8.1.1", "typescript": "^5.0.4", "uuid": "^9.0.1", + "yup": "^1.3.2", "zustand": "^4.4.6" }, "devDependencies": { diff --git a/public/favicon.ico b/public/favicon.ico index 718d6fe..1f74fbe 100644 Binary files a/public/favicon.ico and b/public/favicon.ico differ diff --git a/public/images/svg/calendar-white-large.svg b/public/images/svg/calendar-white-large.svg new file mode 100644 index 0000000..6ff408f --- /dev/null +++ b/public/images/svg/calendar-white-large.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/svg/calendar-white.svg b/public/images/svg/calendar-white.svg new file mode 100644 index 0000000..5431821 --- /dev/null +++ b/public/images/svg/calendar-white.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/svg/calendar.svg b/public/images/svg/calendar.svg new file mode 100644 index 0000000..801fa2a --- /dev/null +++ b/public/images/svg/calendar.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/svg/card-flag.svg b/public/images/svg/card-flag.svg new file mode 100644 index 0000000..5d85b57 --- /dev/null +++ b/public/images/svg/card-flag.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/svg/cipher.svg b/public/images/svg/cipher.svg new file mode 100644 index 0000000..8efed91 --- /dev/null +++ b/public/images/svg/cipher.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/public/images/svg/close-button.svg b/public/images/svg/close-button.svg new file mode 100644 index 0000000..73746a2 --- /dev/null +++ b/public/images/svg/close-button.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/images/svg/dashboard.svg b/public/images/svg/dashboard.svg new file mode 100644 index 0000000..841cf9e --- /dev/null +++ b/public/images/svg/dashboard.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/svg/diagonalArrow.svg b/public/images/svg/diagonalArrow.svg new file mode 100644 index 0000000..bdcb68a --- /dev/null +++ b/public/images/svg/diagonalArrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/svg/down-green-arrow.svg b/public/images/svg/down-green-arrow.svg new file mode 100644 index 0000000..bed41e0 --- /dev/null +++ b/public/images/svg/down-green-arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/svg/down-red-arrow.svg b/public/images/svg/down-red-arrow.svg new file mode 100644 index 0000000..d9ba424 --- /dev/null +++ b/public/images/svg/down-red-arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/svg/exclamation-mark.svg b/public/images/svg/exclamation-mark.svg new file mode 100644 index 0000000..3c300d9 --- /dev/null +++ b/public/images/svg/exclamation-mark.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/svg/financial.svg b/public/images/svg/financial.svg new file mode 100644 index 0000000..4fb18e7 --- /dev/null +++ b/public/images/svg/financial.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/svg/garbage.svg b/public/images/svg/garbage.svg new file mode 100644 index 0000000..ce667a2 --- /dev/null +++ b/public/images/svg/garbage.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/svg/goals.svg b/public/images/svg/goals.svg new file mode 100644 index 0000000..84e8513 --- /dev/null +++ b/public/images/svg/goals.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/public/images/svg/gray-android.svg b/public/images/svg/gray-android.svg new file mode 100644 index 0000000..f49ce7b --- /dev/null +++ b/public/images/svg/gray-android.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/svg/gray-apple.svg b/public/images/svg/gray-apple.svg new file mode 100644 index 0000000..46e8d13 --- /dev/null +++ b/public/images/svg/gray-apple.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/svg/house.svg b/public/images/svg/house.svg new file mode 100644 index 0000000..3b94281 --- /dev/null +++ b/public/images/svg/house.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/svg/logo.svg b/public/images/svg/logo.svg new file mode 100644 index 0000000..ad6a1a1 --- /dev/null +++ b/public/images/svg/logo.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/svg/men.svg b/public/images/svg/men.svg new file mode 100644 index 0000000..60a5851 --- /dev/null +++ b/public/images/svg/men.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/svg/menu-hamburger.svg b/public/images/svg/menu-hamburger.svg new file mode 100644 index 0000000..53d4474 --- /dev/null +++ b/public/images/svg/menu-hamburger.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/svg/moon.svg b/public/images/svg/moon.svg new file mode 100644 index 0000000..d91f970 --- /dev/null +++ b/public/images/svg/moon.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/svg/percentage.svg b/public/images/svg/percentage.svg new file mode 100644 index 0000000..fff3128 --- /dev/null +++ b/public/images/svg/percentage.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/images/svg/reports.svg b/public/images/svg/reports.svg new file mode 100644 index 0000000..e8bbae2 --- /dev/null +++ b/public/images/svg/reports.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/svg/sales.svg b/public/images/svg/sales.svg new file mode 100644 index 0000000..ec80e52 --- /dev/null +++ b/public/images/svg/sales.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/svg/settings.svg b/public/images/svg/settings.svg new file mode 100644 index 0000000..0533d42 --- /dev/null +++ b/public/images/svg/settings.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/svg/star.svg b/public/images/svg/star.svg new file mode 100644 index 0000000..a065744 --- /dev/null +++ b/public/images/svg/star.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/svg/sun.svg b/public/images/svg/sun.svg new file mode 100644 index 0000000..77b4a3e --- /dev/null +++ b/public/images/svg/sun.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/svg/target.svg b/public/images/svg/target.svg new file mode 100644 index 0000000..efaff9e --- /dev/null +++ b/public/images/svg/target.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/svg/ticket-money.svg b/public/images/svg/ticket-money.svg new file mode 100644 index 0000000..ce88091 --- /dev/null +++ b/public/images/svg/ticket-money.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/images/svg/ticket.svg b/public/images/svg/ticket.svg new file mode 100644 index 0000000..ea20220 --- /dev/null +++ b/public/images/svg/ticket.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/images/svg/upArrow.svg b/public/images/svg/upArrow.svg new file mode 100644 index 0000000..5073d5a --- /dev/null +++ b/public/images/svg/upArrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/svg/white-ticket-money.svg b/public/images/svg/white-ticket-money.svg new file mode 100644 index 0000000..4987b5f --- /dev/null +++ b/public/images/svg/white-ticket-money.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/landing.html b/public/landing.html new file mode 100644 index 0000000..32c6332 --- /dev/null +++ b/public/landing.html @@ -0,0 +1,67 @@ + + + + + + + Mapa da vida + + + + + + + Landing Mapa da Vida + + + + Bem-vindo à nossa Página de Medicina + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. Sed cursus + ante dapibus diam. + Proin metus dui, eleifend id, rhoncus non, fermentum ut, nulla. Phasellus scelerisque felis eget neque. + Saiba Mais + + + + + diff --git a/tsconfig.json b/tsconfig.json index e06a445..f81f695 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,6 +5,7 @@ "allowJs": true, "skipLibCheck": true, "strict": true, + "checkJs": false, "forceConsistentCasingInFileNames": true, "noEmit": true, "esModuleInterop": true, diff --git a/utils/colors.ts b/utils/colors.ts new file mode 100644 index 0000000..c507f85 --- /dev/null +++ b/utils/colors.ts @@ -0,0 +1,17 @@ + + +export const PRIMARY_GREEN = '#58d68d' +export const PRIMARY_ERROR = '#CD001A' +export const PRIMARY_GRAY = '#3c3c3c' +export const LIGHT_GRAY = '#F0F3F3' +export const DARK_GRAY = '#413d43' +export const SECONDARY_GRAY = '#697586' +export const SECONDARY_BLUE = '#F0F8FF' + +export const NODE_PERSON = '#5DADE2' +export const NODE_AREA = '#018868' +export const NODE_SUBAREA = '#84C16D' +export const NODE_GOD = '#018868' +export const NODE_REGULAR = '#ccb700' +export const NODE_BAD = '#E60000' + diff --git a/utils/string-modeling.ts b/utils/string-modeling.ts index 16feaed..a5561aa 100644 --- a/utils/string-modeling.ts +++ b/utils/string-modeling.ts @@ -1,5 +1,5 @@ export const cleanString = (x: string): string => { - const valueList = ["equilibrada", "atencao","alerta"] + const valueList = ["Equilíbrio", "Atenção","Alerta"] const stringList = [x.indexOf("equilibrada"), x.indexOf("atenção"), x.indexOf("alerta")] const getIndexOfValueList: any[] = stringList.map((response, index) => { if (response !== -1) return index diff --git a/yarn.lock b/yarn.lock index 1483a6f..f9e9d1b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,11 +7,212 @@ resolved "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz" integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== +"@babel/code-frame@^7.0.0": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" + integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== + dependencies: + "@babel/highlight" "^7.23.4" + chalk "^2.4.2" + +"@babel/helper-module-imports@^7.16.7": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-string-parser@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" + integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== + +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + +"@babel/highlight@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" + integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + +"@babel/runtime@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.0.0.tgz#adeb78fedfc855aa05bc041640f3f6f98e85424c" + integrity sha512-7hGhzlcmg01CvH1EHdSPVXYX1aJ8KCEyz6I9xYIi/asDtzBPMyMhVibhM/K6g/5qnKBwjZtp10bNZIEFTRW1MA== + dependencies: + regenerator-runtime "^0.12.0" + +"@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.2.0", "@babel/runtime@^7.23.7", "@babel/runtime@^7.23.8", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7": + version "7.23.8" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.8.tgz#8ee6fe1ac47add7122902f257b8ddf55c898f650" + integrity sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw== + dependencies: + regenerator-runtime "^0.14.0" + +"@babel/types@^7.22.15": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.6.tgz#be33fdb151e1f5a56877d704492c240fc71c7ccd" + integrity sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg== + dependencies: + "@babel/helper-string-parser" "^7.23.4" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + "@braintree/sanitize-url@^6.0.1": version "6.0.4" resolved "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz" integrity sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A== +"@emotion/babel-plugin@^11.11.0": + version "11.11.0" + resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz#c2d872b6a7767a9d176d007f5b31f7d504bb5d6c" + integrity sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ== + dependencies: + "@babel/helper-module-imports" "^7.16.7" + "@babel/runtime" "^7.18.3" + "@emotion/hash" "^0.9.1" + "@emotion/memoize" "^0.8.1" + "@emotion/serialize" "^1.1.2" + 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" + +"@emotion/cache@^11.11.0": + version "11.11.0" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.11.0.tgz#809b33ee6b1cb1a625fef7a45bc568ccd9b8f3ff" + integrity sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ== + dependencies: + "@emotion/memoize" "^0.8.1" + "@emotion/sheet" "^1.2.2" + "@emotion/utils" "^1.2.1" + "@emotion/weak-memoize" "^0.3.1" + stylis "4.2.0" + +"@emotion/hash@^0.9.1": + version "0.9.1" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.1.tgz#4ffb0055f7ef676ebc3a5a91fb621393294e2f43" + integrity sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ== + +"@emotion/is-prop-valid@1.2.1", "@emotion/is-prop-valid@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz#23116cf1ed18bfeac910ec6436561ecb1a3885cc" + integrity sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw== + dependencies: + "@emotion/memoize" "^0.8.1" + +"@emotion/memoize@^0.8.1": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17" + integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== + +"@emotion/react@^11.11.3": + version "11.11.3" + resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.11.3.tgz#96b855dc40a2a55f52a72f518a41db4f69c31a25" + integrity sha512-Cnn0kuq4DoONOMcnoVsTOR8E+AdnKFf//6kUWc4LCdnxj31pZWn7rIULd6Y7/Js1PiPHzn7SKCM9vB/jBni8eA== + dependencies: + "@babel/runtime" "^7.18.3" + "@emotion/babel-plugin" "^11.11.0" + "@emotion/cache" "^11.11.0" + "@emotion/serialize" "^1.1.3" + "@emotion/use-insertion-effect-with-fallbacks" "^1.0.1" + "@emotion/utils" "^1.2.1" + "@emotion/weak-memoize" "^0.3.1" + hoist-non-react-statics "^3.3.1" + +"@emotion/serialize@^1.1.2", "@emotion/serialize@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.3.tgz#84b77bfcfe3b7bb47d326602f640ccfcacd5ffb0" + integrity sha512-iD4D6QVZFDhcbH0RAG1uVu1CwVLMWUkCvAqqlewO/rxf8+87yIBAlt4+AxMiiKPLs5hFc0owNk/sLLAOROw3cA== + dependencies: + "@emotion/hash" "^0.9.1" + "@emotion/memoize" "^0.8.1" + "@emotion/unitless" "^0.8.1" + "@emotion/utils" "^1.2.1" + csstype "^3.0.2" + +"@emotion/sheet@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.2.tgz#d58e788ee27267a14342303e1abb3d508b6d0fec" + integrity sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA== + +"@emotion/styled@^11.11.0": + version "11.11.0" + resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.11.0.tgz#26b75e1b5a1b7a629d7c0a8b708fbf5a9cdce346" + integrity sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng== + dependencies: + "@babel/runtime" "^7.18.3" + "@emotion/babel-plugin" "^11.11.0" + "@emotion/is-prop-valid" "^1.2.1" + "@emotion/serialize" "^1.1.2" + "@emotion/use-insertion-effect-with-fallbacks" "^1.0.1" + "@emotion/utils" "^1.2.1" + +"@emotion/unitless@0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.0.tgz#a4a36e9cbdc6903737cd20d38033241e1b8833db" + integrity sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw== + +"@emotion/unitless@^0.8.1": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.1.tgz#182b5a4704ef8ad91bde93f7a860a88fd92c79a3" + integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== + +"@emotion/use-insertion-effect-with-fallbacks@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz#08de79f54eb3406f9daaf77c76e35313da963963" + integrity sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw== + +"@emotion/utils@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.1.tgz#bbab58465738d31ae4cb3dbb6fc00a5991f755e4" + integrity sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg== + +"@emotion/weak-memoize@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz#d0fce5d07b0620caa282b5131c297bb60f9d87e6" + integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww== + +"@floating-ui/core@^1.5.3": + version "1.5.3" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.5.3.tgz#b6aa0827708d70971c8679a16cf680a515b8a52a" + integrity sha512-O0WKDOo0yhJuugCx6trZQj5jVJ9yR0ystG2JaNAemYUWce+pmM6WUEFIibnWyEJKdrDxhm75NoSRME35FNaM/Q== + dependencies: + "@floating-ui/utils" "^0.2.0" + +"@floating-ui/dom@^1.5.4": + version "1.5.4" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.5.4.tgz#28df1e1cb373884224a463235c218dcbd81a16bb" + integrity sha512-jByEsHIY+eEdCjnTVu+E3ephzTOzkQ8hgUfGwos+bg7NlH33Zc5uO+QHz1mrQUOgIKKDD1RtS201P9NvAfq3XQ== + dependencies: + "@floating-ui/core" "^1.5.3" + "@floating-ui/utils" "^0.2.0" + +"@floating-ui/react-dom@^2.0.5": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.0.6.tgz#5ffcf40b6550817a973b54cdd443374f51ca7a5c" + integrity sha512-IB8aCRFxr8nFkdYZgH+Otd9EVQPJoynxeFRGTB8voPoZMRWo8XjYuCRgpI1btvuKY69XMiLnW+ym7zoBHM90Rw== + dependencies: + "@floating-ui/dom" "^1.5.4" + +"@floating-ui/utils@^0.2.0": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.1.tgz#16308cea045f0fc777b6ff20a9f25474dd8293d2" + integrity sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q== + +"@fontsource/roboto@^5.0.8": + version "5.0.8" + resolved "https://registry.yarnpkg.com/@fontsource/roboto/-/roboto-5.0.8.tgz#613b477a56f21b5705db1a67e995c033ef317f76" + integrity sha512-XxPltXs5R31D6UZeLIV1td3wTXU3jzd3f2DLsXI8tytMGBkIsGcc9sIyiupRtA8y73HAhuSCeweOoBqf6DbWCA== + "@headlessui/react@^1.7.14": version "1.7.17" resolved "https://registry.npmjs.org/@headlessui/react/-/react-1.7.17.tgz" @@ -51,55 +252,156 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" -"@next/env@13.5.4": - version "13.5.4" - resolved "https://registry.npmjs.org/@next/env/-/env-13.5.4.tgz" - integrity sha512-LGegJkMvRNw90WWphGJ3RMHMVplYcOfRWf2Be3td3sUa+1AaxmsYyANsA+znrGCBjXJNi4XAQlSoEfUxs/4kIQ== - -"@next/swc-darwin-arm64@13.5.4": - version "13.5.4" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.5.4.tgz#241957774fef3f876dc714cfc0ca6f00f561737e" - integrity sha512-Df8SHuXgF1p+aonBMcDPEsaahNo2TCwuie7VXED4FVyECvdXfRT9unapm54NssV9tF3OQFKBFOdlje4T43VO0w== - -"@next/swc-darwin-x64@13.5.4": - version "13.5.4" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.5.4.tgz#fa11bb97bf06cd45cbd554354b46bf93e22c025b" - integrity sha512-siPuUwO45PnNRMeZnSa8n/Lye5ZX93IJom9wQRB5DEOdFrw0JjOMu1GINB8jAEdwa7Vdyn1oJ2xGNaQpdQQ9Pw== - -"@next/swc-linux-arm64-gnu@13.5.4": - version "13.5.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.5.4.tgz#dd3a482cd6871ed23b049066a0f3c4c2f955dc88" - integrity sha512-l/k/fvRP/zmB2jkFMfefmFkyZbDkYW0mRM/LB+tH5u9pB98WsHXC0WvDHlGCYp3CH/jlkJPL7gN8nkTQVrQ/2w== - -"@next/swc-linux-arm64-musl@13.5.4": - version "13.5.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.5.4.tgz#ed6d7abaf5712cff2752ce5300d6bacc6aff1b18" - integrity sha512-YYGb7SlLkI+XqfQa8VPErljb7k9nUnhhRrVaOdfJNCaQnHBcvbT7cx/UjDQLdleJcfyg1Hkn5YSSIeVfjgmkTg== - -"@next/swc-linux-x64-gnu@13.5.4": - version "13.5.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.5.4.tgz#977a040388e8a685a3a85e0dbdff90a4ee2a7189" - integrity sha512-uE61vyUSClnCH18YHjA8tE1prr/PBFlBFhxBZis4XBRJoR+txAky5d7gGNUIbQ8sZZ7LVkSVgm/5Fc7mwXmRAg== - -"@next/swc-linux-x64-musl@13.5.4": - version "13.5.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.5.4.tgz#3e29a0ad8efc016196c3a120da04397eea328b2a" - integrity sha512-qVEKFYML/GvJSy9CfYqAdUexA6M5AklYcQCW+8JECmkQHGoPxCf04iMh7CPR7wkHyWWK+XLt4Ja7hhsPJtSnhg== - -"@next/swc-win32-arm64-msvc@13.5.4": - version "13.5.4" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.5.4.tgz#18a236c3fe5a48d24b56d939e6a05488bb682b7e" - integrity sha512-mDSQfqxAlfpeZOLPxLymZkX0hYF3juN57W6vFHTvwKlnHfmh12Pt7hPIRLYIShk8uYRsKPtMTth/EzpwRI+u8w== - -"@next/swc-win32-ia32-msvc@13.5.4": - version "13.5.4" - resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.5.4.tgz#255132243ab6fb20d3c7c92a585e2c4fa50368fe" - integrity sha512-aoqAT2XIekIWoriwzOmGFAvTtVY5O7JjV21giozBTP5c6uZhpvTWRbmHXbmsjZqY4HnEZQRXWkSAppsIBweKqw== - -"@next/swc-win32-x64-msvc@13.5.4": - version "13.5.4" - resolved "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.5.4.tgz" - integrity sha512-cyRvlAxwlddlqeB9xtPSfNSCRy8BOa4wtMo0IuI9P7Y0XT2qpDrpFKRyZ7kUngZis59mPVla5k8X1oOJ8RxDYg== +"@mui/base@5.0.0-beta.32": + version "5.0.0-beta.32" + resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.32.tgz#cdda6c68389f0b8b39a5bff7ed16e40788aed510" + integrity sha512-4VptvYeLUYMJhZapWBkD50GmKfOc0XT381KJcTK3ncZYIl8MdBhpR6l8jOyeP5cixUPBJhstjrnmQEAHjCLriw== + dependencies: + "@babel/runtime" "^7.23.8" + "@floating-ui/react-dom" "^2.0.5" + "@mui/types" "^7.2.13" + "@mui/utils" "^5.15.5" + "@popperjs/core" "^2.11.8" + clsx "^2.1.0" + prop-types "^15.8.1" + +"@mui/core-downloads-tracker@^5.15.5": + version "5.15.5" + resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.5.tgz#e8e060133ea0e92b1c0e30c441522cab37d0be79" + integrity sha512-VhT8klyXy8GrWrARqLMoM6Nzz809Jc3Wn5wd7WOZfre2vFO1rBV1dBANAPBhBqpaQI0HCMRTWEYoSyOFgRnz4A== + +"@mui/icons-material@^5.15.5": + version "5.15.5" + resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.15.5.tgz#2a2abeadcc5cc6acdfc1d002c252b43a22edff18" + integrity sha512-qiql0fd1JY7TZ1wm1RldvU7sL8QUatE9OC12i/qm5rnm/caTFyAfOyTIR7qqxorsJvoZGyrzwoMkal6Ij9kM0A== + dependencies: + "@babel/runtime" "^7.23.8" + +"@mui/material@^5.15.5": + version "5.15.5" + resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.15.5.tgz#5c672ddf17fbe1a1d6a8854ddbb8502cc83feec0" + integrity sha512-2KfA39f/UWeQl0O22UJs3x1nG3chYlyu9wnux5vTnxUTLzkgYIzQIHaH+ZOGpv5JiZBMKktAPNfhqyhSaQ49qQ== + dependencies: + "@babel/runtime" "^7.23.8" + "@mui/base" "5.0.0-beta.32" + "@mui/core-downloads-tracker" "^5.15.5" + "@mui/system" "^5.15.5" + "@mui/types" "^7.2.13" + "@mui/utils" "^5.15.5" + "@types/react-transition-group" "^4.4.10" + clsx "^2.1.0" + csstype "^3.1.2" + prop-types "^15.8.1" + react-is "^18.2.0" + react-transition-group "^4.4.5" + +"@mui/private-theming@^5.15.5": + version "5.15.5" + resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.15.5.tgz#3f81e77ecff49bc12301922e82b942748b1f6c7c" + integrity sha512-HU1KCyGNcJFsUamTbOM539ZDZJNI/XU7sZFdsN29glktUf+T6hNvDuO2ISinBiLTZy7Ab3R6DSSoYXRrLc4uwQ== + dependencies: + "@babel/runtime" "^7.23.8" + "@mui/utils" "^5.15.5" + prop-types "^15.8.1" + +"@mui/styled-engine-sc@^6.0.0-alpha.12": + version "6.0.0-alpha.12" + resolved "https://registry.yarnpkg.com/@mui/styled-engine-sc/-/styled-engine-sc-6.0.0-alpha.12.tgz#83f84efd6ab71501facc6995dab2d4da26a8a10c" + integrity sha512-1H5fM1J6jzEV8YvAcfuRig5q0d3LQA5SsTIyDdAbJMLyKCFD2Mr4Y3Hk6sY0PU5lA6aF5HdJrUoYVv1y07802w== + dependencies: + "@babel/runtime" "^7.23.7" + csstype "^3.1.2" + hoist-non-react-statics "^3.3.2" + prop-types "^15.8.1" + +"@mui/styled-engine@^5.15.5": + version "5.15.5" + resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.15.5.tgz#c5e0113282c28a8d7580371881c36e1baec86217" + integrity sha512-xoMUd8h270thNL7ZsOzmlluIAMsQg/HT7SCdRjPBVle+XHgTKaiWiRy1ekDOsrrF0rhjME3T7xeeUq2G269UUw== + dependencies: + "@babel/runtime" "^7.23.8" + "@emotion/cache" "^11.11.0" + csstype "^3.1.2" + prop-types "^15.8.1" + +"@mui/system@^5.15.5": + version "5.15.5" + resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.15.5.tgz#dc3fd3e5636a6c238d46e0ba40ada9f213a128a5" + integrity sha512-DMv2vGjUKaDt/m0RlzvLjpKiS5V0LoBhiMUHf5pWdj6uoNlN4FuKUe4pFeYmQMIO5DnVZKybmpPepfkdfEH+Og== + dependencies: + "@babel/runtime" "^7.23.8" + "@mui/private-theming" "^5.15.5" + "@mui/styled-engine" "^5.15.5" + "@mui/types" "^7.2.13" + "@mui/utils" "^5.15.5" + clsx "^2.1.0" + csstype "^3.1.2" + prop-types "^15.8.1" + +"@mui/types@^7.2.13": + version "7.2.13" + resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.13.tgz#d1584912942f9dc042441ecc2d1452be39c666b8" + integrity sha512-qP9OgacN62s+l8rdDhSFRe05HWtLLJ5TGclC9I1+tQngbssu0m2dmFZs+Px53AcOs9fD7TbYd4gc9AXzVqO/+g== + +"@mui/utils@^5.15.5": + version "5.15.5" + resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.15.5.tgz#4033a27e954ae443d0356f625e0c17f4cf32164b" + integrity sha512-jEywgaMGZWPSlVFO7ZZAyXxNeLmq5XBp5At9Ne/sGohRJdesUcdxvyi8TP3odJxwQuL5L6PJV+JQ4DyIDM849A== + dependencies: + "@babel/runtime" "^7.23.8" + "@types/prop-types" "^15.7.11" + prop-types "^15.8.1" + react-is "^18.2.0" + +"@next/env@13.5.6": + version "13.5.6" + resolved "https://registry.yarnpkg.com/@next/env/-/env-13.5.6.tgz#c1148e2e1aa166614f05161ee8f77ded467062bc" + integrity sha512-Yac/bV5sBGkkEXmAX5FWPS9Mmo2rthrOPRQQNfycJPkjUAUclomCPH7QFVCDQ4Mp2k2K1SSM6m0zrxYrOwtFQw== + +"@next/swc-darwin-arm64@13.5.6": + version "13.5.6" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.5.6.tgz#b15d139d8971360fca29be3bdd703c108c9a45fb" + integrity sha512-5nvXMzKtZfvcu4BhtV0KH1oGv4XEW+B+jOfmBdpFI3C7FrB/MfujRpWYSBBO64+qbW8pkZiSyQv9eiwnn5VIQA== + +"@next/swc-darwin-x64@13.5.6": + version "13.5.6" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.5.6.tgz#9c72ee31cc356cb65ce6860b658d807ff39f1578" + integrity sha512-6cgBfxg98oOCSr4BckWjLLgiVwlL3vlLj8hXg2b+nDgm4bC/qVXXLfpLB9FHdoDu4057hzywbxKvmYGmi7yUzA== + +"@next/swc-linux-arm64-gnu@13.5.6": + version "13.5.6" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.5.6.tgz#59f5f66155e85380ffa26ee3d95b687a770cfeab" + integrity sha512-txagBbj1e1w47YQjcKgSU4rRVQ7uF29YpnlHV5xuVUsgCUf2FmyfJ3CPjZUvpIeXCJAoMCFAoGnbtX86BK7+sg== + +"@next/swc-linux-arm64-musl@13.5.6": + version "13.5.6" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.5.6.tgz#f012518228017052736a87d69bae73e587c76ce2" + integrity sha512-cGd+H8amifT86ZldVJtAKDxUqeFyLWW+v2NlBULnLAdWsiuuN8TuhVBt8ZNpCqcAuoruoSWynvMWixTFcroq+Q== + +"@next/swc-linux-x64-gnu@13.5.6": + version "13.5.6" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.5.6.tgz#339b867a7e9e7ee727a700b496b269033d820df4" + integrity sha512-Mc2b4xiIWKXIhBy2NBTwOxGD3nHLmq4keFk+d4/WL5fMsB8XdJRdtUlL87SqVCTSaf1BRuQQf1HvXZcy+rq3Nw== + +"@next/swc-linux-x64-musl@13.5.6": + version "13.5.6" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.5.6.tgz#ae0ae84d058df758675830bcf70ca1846f1028f2" + integrity sha512-CFHvP9Qz98NruJiUnCe61O6GveKKHpJLloXbDSWRhqhkJdZD2zU5hG+gtVJR//tyW897izuHpM6Gtf6+sNgJPQ== + +"@next/swc-win32-arm64-msvc@13.5.6": + version "13.5.6" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.5.6.tgz#a5cc0c16920485a929a17495064671374fdbc661" + integrity sha512-aFv1ejfkbS7PUa1qVPwzDHjQWQtknzAZWGTKYIAaS4NMtBlk3VyA6AYn593pqNanlicewqyl2jUhQAaFV/qXsg== + +"@next/swc-win32-ia32-msvc@13.5.6": + version "13.5.6" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.5.6.tgz#6a2409b84a2cbf34bf92fe714896455efb4191e4" + integrity sha512-XqqpHgEIlBHvzwG8sp/JXMFkLAfGLqkbVsyN+/Ih1mR8INb6YCc2x/Mbwi6hsAgUnqQztz8cvEbHJUbSl7RHDg== + +"@next/swc-win32-x64-msvc@13.5.6": + version "13.5.6" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.5.6.tgz#4a3e2a206251abc729339ba85f60bc0433c2865d" + integrity sha512-Cqfe1YmOS7k+5mGu92nl5ULkzpKuxJrP3+4AEuPmrpFZ3BHxTY3TnHmU1On3bFmFFs6FbTcdF58CCUProGpIGQ== "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -122,6 +424,11 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@popperjs/core@^2.11.8": + version "2.11.8" + resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" + integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== + "@reactflow/background@11.3.6": version "11.3.6" resolved "https://registry.npmjs.org/@reactflow/background/-/background-11.3.6.tgz" @@ -436,6 +743,14 @@ dependencies: "@types/unist" "*" +"@types/hoist-non-react-statics@^3.3.1": + version "3.3.5" + resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz#dab7867ef789d87e2b4b0003c9d65c49cc44a494" + integrity sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg== + dependencies: + "@types/react" "*" + hoist-non-react-statics "^3.3.0" + "@types/mdast@^3.0.0": version "3.0.15" resolved "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz" @@ -455,21 +770,19 @@ resolved "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz" integrity sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g== -"@types/node@*": - version "20.9.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.9.4.tgz#cc8f970e869c26834bdb7ed480b30ede622d74c7" - integrity sha512-wmyg8HUhcn6ACjsn8oKYjkN/zUzQeNtMy44weTJSM6p4MMzEOuKbA3OjJ267uPCOW7Xex9dyrNTful8XTQYoDA== - dependencies: - undici-types "~5.26.4" - -"@types/node@^20.2.5": +"@types/node@*", "@types/node@^20.2.5": version "20.8.2" resolved "https://registry.npmjs.org/@types/node/-/node-20.8.2.tgz" integrity sha512-Vvycsc9FQdwhxE3y3DzeIxuEJbWGDsnrxvMADzTDF/lcdR9/K+AQIeAghTQsHtotg/q0j3WEOYS/jQgSdWue3w== +"@types/parse-json@^4.0.0": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" + integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== + "@types/pg@^8.10.9": version "8.10.9" - resolved "https://registry.yarnpkg.com/@types/pg/-/pg-8.10.9.tgz#d20bb948c6268c5bd847e2bf968f1194c5a2355a" + resolved "https://registry.npmjs.org/@types/pg/-/pg-8.10.9.tgz" integrity sha512-UksbANNE/f8w0wOMxVKKIrLCbEMV+oM1uKejmwXr39olg4xqcfBDbXxObJAt6XxHbDa4XTKOlUEcEltXDX+XLQ== dependencies: "@types/node" "*" @@ -481,6 +794,11 @@ resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.8.tgz" integrity sha512-kMpQpfZKSCBqltAJwskgePRaYRFukDkm1oItcAbC3gNELR20XIBcN9VRgg4+m8DKsTfkWeA4m4Imp4DDuWy7FQ== +"@types/prop-types@^15.7.11": + version "15.7.11" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.11.tgz#2596fb352ee96a1379c657734d4b913a613ad563" + integrity sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng== + "@types/react-dom@^18.2.4": version "18.2.9" resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.9.tgz" @@ -488,6 +806,13 @@ dependencies: "@types/react" "*" +"@types/react-transition-group@^4.4.10": + version "4.4.10" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.10.tgz#6ee71127bdab1f18f11ad8fb3322c6da27c327ac" + integrity sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q== + dependencies: + "@types/react" "*" + "@types/react@*", "@types/react@^18.2.7": version "18.2.24" resolved "https://registry.npmjs.org/@types/react/-/react-18.2.24.tgz" @@ -502,6 +827,11 @@ resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.4.tgz" integrity sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ== +"@types/stylis@4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@types/stylis/-/stylis-4.2.0.tgz#199a3f473f0c3a6f6e4e1b17cdbc967f274bdc6b" + integrity sha512-n4sx2bqL0mW1tvDf/loQ+aMX7GQD3lc3fkCMC55VFNDu/vBOabO+LTIeXKM14xK0ppk5TUGcWRjiSpIlUpghKw== + "@types/unist@*", "@types/unist@^2", "@types/unist@^2.0.0": version "2.0.10" resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz" @@ -517,6 +847,13 @@ resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz" integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + any-promise@^1.0.0: version "1.3.0" resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz" @@ -546,7 +883,7 @@ arg@^5.0.2: asynckit@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== autoprefixer@^10.4.14: @@ -563,13 +900,22 @@ autoprefixer@^10.4.14: axios@^1.6.2: version "1.6.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.2.tgz#de67d42c755b571d3e698df1b6504cde9b0ee9f2" + resolved "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz" integrity sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A== dependencies: follow-redirects "^1.15.0" form-data "^4.0.0" proxy-from-env "^1.1.0" +babel-plugin-macros@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" + integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== + dependencies: + "@babel/runtime" "^7.12.5" + cosmiconfig "^7.0.0" + resolve "^1.19.0" + bail@^2.0.0: version "2.0.2" resolved "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz" @@ -612,7 +958,7 @@ browserslist@^4.21.10: buffer-writer@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/buffer-writer/-/buffer-writer-2.0.0.tgz#ce7eb81a38f7829db09c873f2fbb792c0c98ec04" + resolved "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz" integrity sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw== busboy@1.6.0: @@ -622,11 +968,21 @@ busboy@1.6.0: dependencies: streamsearch "^1.1.0" +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + camelcase-css@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz" integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== +camelize@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3" + integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== + caniuse-lite@^1.0.30001406, caniuse-lite@^1.0.30001538, caniuse-lite@^1.0.30001541: version "1.0.30001543" resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001543.tgz" @@ -637,6 +993,15 @@ ccount@^2.0.0: resolved "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz" integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + character-entities@^2.0.0: version "2.0.2" resolved "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz" @@ -677,9 +1042,26 @@ clone@2.x: resolved "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz" integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== +clsx@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.0.tgz#e851283bcb5c80ee7608db18487433f7b23f77cb" + integrity sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + combined-stream@^1.0.8: version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" @@ -704,6 +1086,19 @@ concat-map@0.0.1: resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== +convert-source-map@^1.5.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + +cors@^2.8.5: + version "2.8.5" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + dependencies: + object-assign "^4" + vary "^1" + cose-base@^1.0.0: version "1.0.3" resolved "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz" @@ -718,12 +1113,37 @@ cose-base@^2.2.0: dependencies: layout-base "^2.0.0" +cosmiconfig@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" + 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" + +css-color-keywords@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" + integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg== + +css-to-react-native@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.2.0.tgz#cdd8099f71024e149e4f6fe17a7d46ecd55f1e32" + integrity sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ== + dependencies: + camelize "^1.0.0" + css-color-keywords "^1.0.0" + postcss-value-parser "^4.0.2" + cssesc@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -csstype@^3.0.2: +csstype@3.1.2, csstype@^3.0.2, csstype@^3.1.2: version "3.1.2" resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz" integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== @@ -1048,6 +1468,11 @@ decode-named-character-reference@^1.0.0: dependencies: character-entities "^2.0.0" +deepmerge@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.2.1.tgz#5d3ff22a01c00f645405a2fbc17d0778a1801170" + integrity sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA== + delaunator@5: version "5.0.0" resolved "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz" @@ -1057,7 +1482,7 @@ delaunator@5: delayed-stream@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== dequal@^2.0.0: @@ -1087,6 +1512,14 @@ dlv@^1.1.3: resolved "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz" integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== +dom-helpers@^5.0.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" + integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== + dependencies: + "@babel/runtime" "^7.8.7" + csstype "^3.0.2" + dompurify@^3.0.5: version "3.0.6" resolved "https://registry.npmjs.org/dompurify/-/dompurify-3.0.6.tgz" @@ -1107,16 +1540,38 @@ entities@^4.4.0: resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + escalade@^3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + escape-string-regexp@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz" integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== +exenv@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/exenv/-/exenv-1.2.2.tgz#2ae78e85d9894158670b03d47bec1f03bd91bb9d" + integrity sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw== + extend@^3.0.0: version "3.0.2" resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" @@ -1147,20 +1602,39 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +find-root@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== + follow-redirects@^1.15.0: version "1.15.3" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz" integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q== form-data@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" mime-types "^2.1.12" +formik@^2.4.5: + version "2.4.5" + resolved "https://registry.yarnpkg.com/formik/-/formik-2.4.5.tgz#f899b5b7a6f103a8fabb679823e8fafc7e0ee1b4" + integrity sha512-Gxlht0TD3vVdzMDHwkiNZqJ7Mvg77xQNfmBRrNtvzcHZs72TJppSTDKHpImCMJZwcWPBJ8jSQQ95GJzXFf1nAQ== + dependencies: + "@types/hoist-non-react-statics" "^3.3.1" + deepmerge "^2.1.1" + hoist-non-react-statics "^3.3.0" + lodash "^4.17.21" + lodash-es "^4.17.21" + react-fast-compare "^2.0.1" + tiny-warning "^1.0.2" + tslib "^2.0.0" + fraction.js@^4.3.6: version "4.3.6" resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.6.tgz" @@ -1212,6 +1686,16 @@ graceful-fs@^4.1.2: resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + has@^1.0.3: version "1.0.4" resolved "https://registry.npmjs.org/has/-/has-1.0.4.tgz" @@ -1308,6 +1792,13 @@ heap@^0.2.6: resolved "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz" integrity sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg== +hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + html-url-attributes@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/html-url-attributes/-/html-url-attributes-3.0.0.tgz" @@ -1325,6 +1816,14 @@ iconv-lite@0.6: dependencies: safer-buffer ">= 2.1.2 < 3.0.0" +import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + inflight@^1.0.4: version "1.0.6" resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" @@ -1353,6 +1852,11 @@ internmap@^1.0.0: resolved "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz" integrity sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw== +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" @@ -1394,11 +1898,21 @@ jiti@^1.18.2: resolved "https://registry.npmjs.org/jiti/-/jiti-1.20.0.tgz" integrity sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA== -"js-tokens@^3.0.0 || ^4.0.0": +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +keycode@^2.1.7: + version "2.2.1" + resolved "https://registry.yarnpkg.com/keycode/-/keycode-2.2.1.tgz#09c23b2be0611d26117ea2501c2c391a01f39eff" + integrity sha512-Rdgz9Hl9Iv4QKi8b0OlCRQEzp4AgVxyCtz5S/+VIHezDmrDhkp2N2TqBWOLz0/gbeREXOOiI9/4b8BY9uw2vFg== + khroma@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz" @@ -1454,7 +1968,7 @@ longest-streak@^3.0.0: resolved "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz" integrity sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g== -loose-envify@^1.1.0: +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -2135,12 +2649,12 @@ micromatch@^4.0.4, micromatch@^4.0.5: mime-db@1.52.0: version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== mime-types@^2.1.12: version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" @@ -2181,12 +2695,12 @@ nanoid@^3.3.6: resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz" integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== -next@^13.4.4: - version "13.5.4" - resolved "https://registry.npmjs.org/next/-/next-13.5.4.tgz" - integrity sha512-+93un5S779gho8y9ASQhb/bTkQF17FNQOtXLKAj3lsNgltEcF0C5PMLLncDmH+8X1EnJH1kbqAERa29nRXqhjA== +next@^13.2.4: + version "13.5.6" + resolved "https://registry.yarnpkg.com/next/-/next-13.5.6.tgz#e964b5853272236c37ce0dd2c68302973cf010b1" + integrity sha512-Y2wTcTbO4WwEsVb4A8VSnOsG1I9ok+h74q0ZdxkwM3EODqrs4pasq7O0iUxbcS9VtWMicG7f3+HAj0r1+NtKSw== dependencies: - "@next/env" "13.5.4" + "@next/env" "13.5.6" "@swc/helpers" "0.5.2" busboy "1.6.0" caniuse-lite "^1.0.30001406" @@ -2194,19 +2708,19 @@ next@^13.4.4: styled-jsx "5.1.1" watchpack "2.4.0" optionalDependencies: - "@next/swc-darwin-arm64" "13.5.4" - "@next/swc-darwin-x64" "13.5.4" - "@next/swc-linux-arm64-gnu" "13.5.4" - "@next/swc-linux-arm64-musl" "13.5.4" - "@next/swc-linux-x64-gnu" "13.5.4" - "@next/swc-linux-x64-musl" "13.5.4" - "@next/swc-win32-arm64-msvc" "13.5.4" - "@next/swc-win32-ia32-msvc" "13.5.4" - "@next/swc-win32-x64-msvc" "13.5.4" + "@next/swc-darwin-arm64" "13.5.6" + "@next/swc-darwin-x64" "13.5.6" + "@next/swc-linux-arm64-gnu" "13.5.6" + "@next/swc-linux-arm64-musl" "13.5.6" + "@next/swc-linux-x64-gnu" "13.5.6" + "@next/swc-linux-x64-musl" "13.5.6" + "@next/swc-win32-arm64-msvc" "13.5.6" + "@next/swc-win32-ia32-msvc" "13.5.6" + "@next/swc-win32-x64-msvc" "13.5.6" node-cache@^5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/node-cache/-/node-cache-5.1.2.tgz#f264dc2ccad0a780e76253a694e9fd0ed19c398d" + resolved "https://registry.npmjs.org/node-cache/-/node-cache-5.1.2.tgz" integrity sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg== dependencies: clone "2.x" @@ -2231,7 +2745,7 @@ normalize-range@^0.1.2: resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== -object-assign@^4.0.1: +object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== @@ -2243,7 +2757,7 @@ object-hash@^3.0.0: obuf@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== once@^1.3.0: @@ -2255,9 +2769,26 @@ once@^1.3.0: packet-reader@1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/packet-reader/-/packet-reader-1.0.0.tgz#9238e5480dedabacfe1fe3f2771063f164157d74" + resolved "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz" integrity sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ== +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + 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" + parse5@^7.0.0: version "7.1.2" resolved "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz" @@ -2275,39 +2806,44 @@ path-parse@^1.0.7: resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + pg-cloudflare@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz#e6d5833015b170e23ae819e8c5d7eaedb472ca98" + resolved "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz" integrity sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q== pg-connection-string@^2.6.2: version "2.6.2" - resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.6.2.tgz#713d82053de4e2bd166fab70cd4f26ad36aab475" + resolved "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.2.tgz" integrity sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA== pg-int8@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" + resolved "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz" integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw== pg-numeric@1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/pg-numeric/-/pg-numeric-1.0.2.tgz#816d9a44026086ae8ae74839acd6a09b0636aa3a" + resolved "https://registry.npmjs.org/pg-numeric/-/pg-numeric-1.0.2.tgz" integrity sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw== pg-pool@^3.6.1: version "3.6.1" - resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.6.1.tgz#5a902eda79a8d7e3c928b77abf776b3cb7d351f7" + resolved "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.1.tgz" integrity sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og== pg-protocol@*, pg-protocol@^1.6.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.6.0.tgz#4c91613c0315349363af2084608db843502f8833" + resolved "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz" integrity sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q== pg-types@^2.1.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-2.2.0.tgz#2d0250d636454f7cfa3b6ae0382fdfa8063254a3" + resolved "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz" integrity sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA== dependencies: pg-int8 "1.0.1" @@ -2318,7 +2854,7 @@ pg-types@^2.1.0: pg-types@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-4.0.1.tgz#31857e89d00a6c66b06a14e907c3deec03889542" + resolved "https://registry.npmjs.org/pg-types/-/pg-types-4.0.1.tgz" integrity sha512-hRCSDuLII9/LE3smys1hRHcu5QGcLs9ggT7I/TCs0IE+2Eesxi9+9RWAAwZ0yaGjxoWICF/YHLOEjydGujoJ+g== dependencies: pg-int8 "1.0.1" @@ -2331,7 +2867,7 @@ pg-types@^4.0.1: pg@^8.11.3: version "8.11.3" - resolved "https://registry.yarnpkg.com/pg/-/pg-8.11.3.tgz#d7db6e3fe268fcedd65b8e4599cda0b8b4bf76cb" + resolved "https://registry.npmjs.org/pg/-/pg-8.11.3.tgz" integrity sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g== dependencies: buffer-writer "2.0.0" @@ -2346,7 +2882,7 @@ pg@^8.11.3: pgpass@1.x: version "1.0.5" - resolved "https://registry.yarnpkg.com/pgpass/-/pgpass-1.0.5.tgz#9b873e4a564bb10fa7a7dbd55312728d422a223d" + resolved "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz" integrity sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug== dependencies: split2 "^4.1.0" @@ -2410,7 +2946,7 @@ postcss-selector-parser@^6.0.11: cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: +postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== @@ -2426,53 +2962,67 @@ postcss@8.4.31, postcss@^8.4.23, postcss@^8.4.24: postgres-array@~2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-2.0.0.tgz#48f8fce054fbc69671999329b8834b772652d82e" + resolved "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz" integrity sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA== postgres-array@~3.0.1: version "3.0.2" - resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-3.0.2.tgz#68d6182cb0f7f152a7e60dc6a6889ed74b0a5f98" + resolved "https://registry.npmjs.org/postgres-array/-/postgres-array-3.0.2.tgz" integrity sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog== postgres-bytea@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-1.0.0.tgz#027b533c0aa890e26d172d47cf9ccecc521acd35" + resolved "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz" integrity sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w== postgres-bytea@~3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-3.0.0.tgz#9048dc461ac7ba70a6a42d109221619ecd1cb089" + resolved "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-3.0.0.tgz" integrity sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw== dependencies: obuf "~1.1.2" postgres-date@~1.0.4: version "1.0.7" - resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.7.tgz#51bc086006005e5061c591cee727f2531bf641a8" + resolved "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz" integrity sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q== postgres-date@~2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-2.0.1.tgz#638b62e5c33764c292d37b08f5257ecb09231457" + resolved "https://registry.npmjs.org/postgres-date/-/postgres-date-2.0.1.tgz" integrity sha512-YtMKdsDt5Ojv1wQRvUhnyDJNSr2dGIC96mQVKz7xufp07nfuFONzdaowrMHjlAzY6GDLd4f+LUHHAAM1h4MdUw== postgres-interval@^1.1.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.2.0.tgz#b460c82cb1587507788819a06aa0fffdb3544695" + resolved "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz" integrity sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ== dependencies: xtend "^4.0.0" postgres-interval@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-3.0.0.tgz#baf7a8b3ebab19b7f38f07566c7aab0962f0c86a" + resolved "https://registry.npmjs.org/postgres-interval/-/postgres-interval-3.0.0.tgz" integrity sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw== postgres-range@^1.1.1: version "1.1.3" - resolved "https://registry.yarnpkg.com/postgres-range/-/postgres-range-1.1.3.tgz#9ccd7b01ca2789eb3c2e0888b3184225fa859f76" + resolved "https://registry.npmjs.org/postgres-range/-/postgres-range-1.1.3.tgz" integrity sha512-VdlZoocy5lCP0c/t66xAfclglEapXPCIVhqqJRncYpvbCgImF0w67aPKfbqUMr72tO2k5q0TdTZwCLjPTI6C9g== +prop-types@^15.5.4, prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +property-expr@^2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-2.0.6.tgz#f77bc00d5928a6c748414ad12882e83f24aec1e8" + integrity sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA== + property-information@^6.0.0: version "6.4.0" resolved "https://registry.npmjs.org/property-information/-/property-information-6.4.0.tgz" @@ -2480,7 +3030,7 @@ property-information@^6.0.0: proxy-from-env@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== queue-microtask@^1.2.2: @@ -2496,9 +3046,38 @@ react-dom@18.2.0: loose-envify "^1.1.0" scheduler "^0.23.0" +react-event-listener@^0.6.0: + version "0.6.6" + resolved "https://registry.yarnpkg.com/react-event-listener/-/react-event-listener-0.6.6.tgz#758f7b991cad9086dd39fd29fad72127e1d8962a" + integrity sha512-+hCNqfy7o9wvO6UgjqFmBzARJS7qrNoda0VqzvOuioEpoEXKutiKuv92dSz6kP7rYLmyHPyYNLesi5t/aH1gfw== + dependencies: + "@babel/runtime" "^7.2.0" + prop-types "^15.6.0" + warning "^4.0.1" + +react-fast-compare@^2.0.1: + version "2.0.4" + resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-2.0.4.tgz#e84b4d455b0fec113e0402c329352715196f81f9" + integrity sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw== + +react-is@^16.13.1, react-is@^16.7.0: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + +react-lifecycles-compat@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" + integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== + react-loading@^2.0.3: version "2.0.3" - resolved "https://registry.yarnpkg.com/react-loading/-/react-loading-2.0.3.tgz#e8138fb0c3e4674e481b320802ac7048ae14ffb9" + resolved "https://registry.npmjs.org/react-loading/-/react-loading-2.0.3.tgz" integrity sha512-Vdqy79zq+bpeWJqC+xjltUjuGApyoItPgL0vgVfcJHhqwU7bAMKzysfGW/ADu6i0z0JiOCRJjo+IkFNkRNbA3A== react-markdown@^9.0.1: @@ -2517,6 +3096,62 @@ react-markdown@^9.0.1: unist-util-visit "^5.0.0" vfile "^6.0.0" +react-modal@^3.16.1: + version "3.16.1" + resolved "https://registry.yarnpkg.com/react-modal/-/react-modal-3.16.1.tgz#34018528fc206561b1a5467fc3beeaddafb39b2b" + integrity sha512-VStHgI3BVcGo7OXczvnJN7yT2TWHJPDXZWyI/a0ssFNhGZWsPmB8cF0z33ewDXq4VfYMO1vXgiv/g8Nj9NDyWg== + dependencies: + exenv "^1.2.0" + prop-types "^15.7.2" + react-lifecycles-compat "^3.0.0" + warning "^4.0.3" + +react-swipeable-views-core@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/react-swipeable-views-core/-/react-swipeable-views-core-0.14.0.tgz#6ac443a7cc7bc5ea022fbd549292bb5fff361cce" + integrity sha512-0W/e9uPweNEOSPjmYtuKSC/SvKKg1sfo+WtPdnxeLF3t2L82h7jjszuOHz9C23fzkvLfdgkaOmcbAxE9w2GEjA== + dependencies: + "@babel/runtime" "7.0.0" + warning "^4.0.1" + +react-swipeable-views-utils@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/react-swipeable-views-utils/-/react-swipeable-views-utils-0.14.0.tgz#6b76e251906747482730c22002fe47ab1014ba32" + integrity sha512-W+fXBOsDqgFK1/g7MzRMVcDurp3LqO3ksC8UgInh2P/tKgb5DusuuB1geKHFc6o1wKl+4oyER4Zh3Lxmr8xbXA== + dependencies: + "@babel/runtime" "7.0.0" + keycode "^2.1.7" + prop-types "^15.6.0" + react-event-listener "^0.6.0" + react-swipeable-views-core "^0.14.0" + shallow-equal "^1.2.1" + +react-swipeable-views@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/react-swipeable-views/-/react-swipeable-views-0.14.0.tgz#149c0df3d92220cc89e3f6d5c04a78dfe46f9b54" + integrity sha512-wrTT6bi2nC3JbmyNAsPXffUXLn0DVT9SbbcFr36gKpbaCgEp7rX/OFxsu5hPc/NBsUhHyoSRGvwqJNNrWTwCww== + dependencies: + "@babel/runtime" "7.0.0" + prop-types "^15.5.4" + react-swipeable-views-core "^0.14.0" + react-swipeable-views-utils "^0.14.0" + warning "^4.0.1" + +react-top-loading-bar@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/react-top-loading-bar/-/react-top-loading-bar-2.3.1.tgz#d727eb6aaa412eae52a990e5de9f33e9136ac714" + integrity sha512-rQk2Nm+TOBrM1C4E3e6KwT65iXyRSgBHjCkr2FNja1S51WaPulRA5nKj/xazuQ3x89wDDdGsrqkqy0RBIfd0xg== + +react-transition-group@^4.4.5: + version "4.4.5" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1" + integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g== + dependencies: + "@babel/runtime" "^7.5.5" + dom-helpers "^5.0.1" + loose-envify "^1.4.0" + prop-types "^15.6.2" + react@^18.2.0: version "18.2.0" resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" @@ -2550,6 +3185,16 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" +regenerator-runtime@^0.12.0: + version "0.12.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" + integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg== + +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + rehype-raw@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz" @@ -2601,6 +3246,11 @@ remark-stringify@^11.0.0: mdast-util-to-markdown "^2.0.0" unified "^11.0.0" +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + resolve@^1.1.7, resolve@^1.22.2: version "1.22.6" resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz" @@ -2610,6 +3260,15 @@ resolve@^1.1.7, resolve@^1.22.2: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +resolve@^1.19.0: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + reusify@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" @@ -2651,11 +3310,26 @@ scheduler@^0.23.0: dependencies: loose-envify "^1.1.0" +shallow-equal@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/shallow-equal/-/shallow-equal-1.2.1.tgz#4c16abfa56043aa20d050324efa68940b0da79da" + integrity sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA== + +shallowequal@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== + source-map-js@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== +source-map@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + space-separated-tokens@^2.0.0: version "2.0.2" resolved "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz" @@ -2663,7 +3337,7 @@ space-separated-tokens@^2.0.0: split2@^4.1.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" + resolved "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz" integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== streamsearch@^1.1.0: @@ -2678,6 +3352,21 @@ style-to-object@^0.4.0: dependencies: inline-style-parser "0.1.1" +styled-components@^6.1.8: + version "6.1.8" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-6.1.8.tgz#c109d36aeea52d8f049e12de2f3be39a6fc86201" + integrity sha512-PQ6Dn+QxlWyEGCKDS71NGsXoVLKfE1c3vApkvDYS5KAK+V8fNWGhbSUEo9Gg2iaID2tjLXegEW3bZDUGpofRWw== + dependencies: + "@emotion/is-prop-valid" "1.2.1" + "@emotion/unitless" "0.8.0" + "@types/stylis" "4.2.0" + css-to-react-native "3.2.0" + csstype "3.1.2" + postcss "8.4.31" + shallowequal "1.1.0" + stylis "4.3.1" + tslib "2.5.0" + styled-jsx@5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz" @@ -2685,6 +3374,23 @@ styled-jsx@5.1.1: dependencies: client-only "0.0.1" +styled-jsx@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.1.2.tgz#55020c50da54d2b225750bd7aaab57d511724060" + integrity sha512-FI5r0a5ED2/+DSdG2ZRz3a4FtNQnKPLadauU5v76a9QsscwZrWggQKOmyxGGP5EWKbyY3bsuWAJYzyKaDAVAcw== + dependencies: + client-only "0.0.1" + +stylis@4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51" + integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== + +stylis@4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.1.tgz#ed8a9ebf9f76fe1e12d462f5cc3c4c980b23a7eb" + integrity sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ== + stylis@^4.1.3: version "4.3.0" resolved "https://registry.npmjs.org/stylis/-/stylis-4.3.0.tgz" @@ -2703,6 +3409,20 @@ sucrase@^3.32.0: pirates "^4.0.1" ts-interface-checker "^0.1.9" +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" @@ -2750,6 +3470,21 @@ thenify-all@^1.0.0: dependencies: any-promise "^1.0.0" +tiny-case@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-case/-/tiny-case-1.0.3.tgz#d980d66bc72b5d5a9ca86fb7c9ffdb9c898ddd03" + integrity sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q== + +tiny-warning@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" + integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" @@ -2757,6 +3492,11 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" +toposort@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/toposort/-/toposort-2.0.2.tgz#ae21768175d1559d48bef35420b2f4962f09c330" + integrity sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg== + trim-lines@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz" @@ -2777,21 +3517,26 @@ ts-interface-checker@^0.1.9: resolved "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz" integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== -tslib@^2.4.0: +tslib@2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" + integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== + +tslib@^2.0.0, tslib@^2.4.0: version "2.6.2" resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== +type-fest@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" + integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== + typescript@^5.0.4: version "5.2.2" resolved "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz" integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== - unified@^11.0.0: version "11.0.4" resolved "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz" @@ -2883,6 +3628,11 @@ uvu@^0.5.0: kleur "^4.0.3" sade "^1.7.3" +vary@^1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + vfile-location@^5.0.0: version "5.0.2" resolved "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.2.tgz" @@ -2908,6 +3658,13 @@ vfile@^6.0.0: unist-util-stringify-position "^4.0.0" vfile-message "^4.0.0" +warning@^4.0.1, warning@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" + integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== + dependencies: + loose-envify "^1.0.0" + watchpack@2.4.0: version "2.4.0" resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz" @@ -2933,14 +3690,29 @@ wrappy@1: xtend@^4.0.0: version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== +yaml@^1.10.0: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + yaml@^2.1.1: version "2.3.2" resolved "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz" integrity sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg== +yup@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/yup/-/yup-1.3.2.tgz#afffc458f1513ed386e6aaf4bcaa4e67a9e270dc" + integrity sha512-6KCM971iQtJ+/KUaHdrhVr2LDkfhBtFPRnsG1P8F4q3uUVQ2RfEM9xekpha9aA4GXWJevjM10eDcPQ1FfWlmaQ== + dependencies: + property-expr "^2.0.5" + tiny-case "^1.0.3" + toposort "^2.0.2" + type-fest "^2.19.0" + zustand@^4.4.1, zustand@^4.4.6: version "4.4.6" resolved "https://registry.npmjs.org/zustand/-/zustand-4.4.6.tgz"
Loading!
+ {'Copyright © 2023 '} + + {'Mapa da Vida'} + +
Copyright © 2023 Soares & Zichtl - Todos os direitos reservados
{'Acesse nossa comunidade no'}
{userData.firstName} {userData.lastName}
{userData.email}
{'Não esqueça porque está aqui!'}
{userData.motivo}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. Sed cursus + ante dapibus diam.
Proin metus dui, eleifend id, rhoncus non, fermentum ut, nulla. Phasellus scelerisque felis eget neque.