From ee20ad0230b8299e9111a8134a07746f962f37bc Mon Sep 17 00:00:00 2001 From: Joshua Date: Sat, 30 Jul 2022 23:59:56 +0200 Subject: [PATCH] Initial draft --- .gitignore | 8 + components/Button.tsx | 25 ++ components/ButtonGrid.tsx | 31 ++ components/Icon.tsx | 11 + components/Lanyard.tsx | 39 ++ components/Title.tsx | 13 + next-env.d.ts | 5 + next.config.js | 6 + package.json | 27 ++ pages/_app.tsx | 11 + pages/api/lanyard.ts | 6 + pages/api/profiles.ts | 6 + pages/index.tsx | 30 ++ pnpm-lock.yaml | 704 +++++++++++++++++++++++++++++++++++++ public/icons.svg | 44 +++ styles/Button.module.sass | 29 ++ styles/Index.module.sass | 4 + styles/Lanyard.module.sass | 53 +++ styles/Title.module.sass | 5 + styles/fonts/Flachbau.ttf | Bin 0 -> 69168 bytes styles/main.sass | 17 + tsconfig.json | 31 ++ utils/shared/lanyard.ts | 7 + utils/shared/profiles.ts | 7 + utils/supabase.ts | 5 + utils/types.ts | 28 ++ 26 files changed, 1152 insertions(+) create mode 100644 .gitignore create mode 100644 components/Button.tsx create mode 100644 components/ButtonGrid.tsx create mode 100644 components/Icon.tsx create mode 100644 components/Lanyard.tsx create mode 100644 components/Title.tsx create mode 100644 next-env.d.ts create mode 100644 next.config.js create mode 100644 package.json create mode 100644 pages/_app.tsx create mode 100644 pages/api/lanyard.ts create mode 100644 pages/api/profiles.ts create mode 100644 pages/index.tsx create mode 100644 pnpm-lock.yaml create mode 100644 public/icons.svg create mode 100644 styles/Button.module.sass create mode 100644 styles/Index.module.sass create mode 100644 styles/Lanyard.module.sass create mode 100644 styles/Title.module.sass create mode 100644 styles/fonts/Flachbau.ttf create mode 100644 styles/main.sass create mode 100644 tsconfig.json create mode 100644 utils/shared/lanyard.ts create mode 100644 utils/shared/profiles.ts create mode 100644 utils/supabase.ts create mode 100644 utils/types.ts diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..784b136 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +node_modules/ +.vercel +.next +build/ + +.env +.env.* +.*.env \ No newline at end of file diff --git a/components/Button.tsx b/components/Button.tsx new file mode 100644 index 0000000..3724a6a --- /dev/null +++ b/components/Button.tsx @@ -0,0 +1,25 @@ +import Icon from "components/Icon"; +import Link from "next/link"; +import styles from "styles/Button.module.sass"; +import { SocialButton } from "utils/types"; + +const Button = (props: SocialButton) => { + return ( + <> + + +
+ +
+

{props.platform}

+

{props.username}

+
+ +
+
+ + + ); +}; + +export default Button; diff --git a/components/ButtonGrid.tsx b/components/ButtonGrid.tsx new file mode 100644 index 0000000..26167b4 --- /dev/null +++ b/components/ButtonGrid.tsx @@ -0,0 +1,31 @@ +import Button from "./Button"; +import styles from "styles/Button.module.sass"; +import { SocialButton } from "utils/types"; +import { CSSProperties } from "react"; + +const ButtonGrid = ({ + Buttons, + style, +}: { + Buttons: SocialButton[]; + style?: CSSProperties; +}) => { + return ( +
+ {Buttons.map((button, index) => { + return ( +
+ ); +}; + +export default ButtonGrid; diff --git a/components/Icon.tsx b/components/Icon.tsx new file mode 100644 index 0000000..299a3c9 --- /dev/null +++ b/components/Icon.tsx @@ -0,0 +1,11 @@ +import { Icon } from "utils/types"; + +const Icon = ({icon, className}: {icon: Icon, className?:string}) => { + return ( + + + + ) +} + +export default Icon \ No newline at end of file diff --git a/components/Lanyard.tsx b/components/Lanyard.tsx new file mode 100644 index 0000000..e930c37 --- /dev/null +++ b/components/Lanyard.tsx @@ -0,0 +1,39 @@ +// import { lanyard } from "utils/shared/lanyard"; +import { useLanyard } from "use-lanyard"; +import styles from "styles/Lanyard.module.sass"; +import Image from "next/image"; + +const Lanyard = () => { + const id = process.env.NEXT_DISCORD_ID || "318044130796109825"; + const lanyard = useLanyard(id).data; + + if (!lanyard?.listening_to_spotify) return; + let artists; + if (lanyard.spotify.artist.split(";").length > 2) { + artists = [ + lanyard.spotify.artist.split(";")[0], + lanyard.spotify.artist.split(";")[1], + ].join(","); + } else { + artists = lanyard.spotify.artist.split(";").join(","); + } + + return ( + <> +
+ +
+

{lanyard.spotify.song}

+

{artists}

+
+
+ + ); +}; + +export default Lanyard; diff --git a/components/Title.tsx b/components/Title.tsx new file mode 100644 index 0000000..90e03a5 --- /dev/null +++ b/components/Title.tsx @@ -0,0 +1,13 @@ +import styles from "styles/Title.module.sass"; + +const Title = () => { + return ( + <> +

+ Lio's Domain +

+ + ) +} + +export default Title \ No newline at end of file diff --git a/next-env.d.ts b/next-env.d.ts new file mode 100644 index 0000000..4f11a03 --- /dev/null +++ b/next-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/next.config.js b/next.config.js new file mode 100644 index 0000000..4831cb3 --- /dev/null +++ b/next.config.js @@ -0,0 +1,6 @@ +// next.config.js +module.exports = { + images: { + domains: ['i.scdn.co'], + }, + } \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..e421ff5 --- /dev/null +++ b/package.json @@ -0,0 +1,27 @@ +{ + "name": "void", + "version": "4.0.0", + "scripts": { + "dev": "next", + "build": "next build", + "start": "next start", + "type-check": "tsc" + }, + "dependencies": { + "@react-ui-org/react-ui": "^0.47.0", + "@supabase/supabase-js": "^1.35.4", + "next": "^12.2.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-use-lanyard": "^0.1.2", + "sass": "^1.53.0", + "use-lanyard": "^1.1.0" + }, + "license": "MIT", + "devDependencies": { + "@types/node": "^18.0.5", + "@types/react": "^18.0.15", + "@types/react-dom": "^18.0.6", + "typescript": "^4.7.4" + } +} diff --git a/pages/_app.tsx b/pages/_app.tsx new file mode 100644 index 0000000..40ac39a --- /dev/null +++ b/pages/_app.tsx @@ -0,0 +1,11 @@ +import React from 'react' +// import { AppProps } from 'next/app' + +// import 'tailwindcss/tailwind.css' +import '../styles/main.sass' + +function MyApp({ Component, pageProps }) { + return +} + +export default MyApp \ No newline at end of file diff --git a/pages/api/lanyard.ts b/pages/api/lanyard.ts new file mode 100644 index 0000000..7f6d466 --- /dev/null +++ b/pages/api/lanyard.ts @@ -0,0 +1,6 @@ +import type { NextApiRequest, NextApiResponse } from 'next' +import { jsonyard } from 'utils/shared/lanyard' + +export default async (req: NextApiRequest, res: NextApiResponse) => { + return res.json(await jsonyard()) +} \ No newline at end of file diff --git a/pages/api/profiles.ts b/pages/api/profiles.ts new file mode 100644 index 0000000..85be69e --- /dev/null +++ b/pages/api/profiles.ts @@ -0,0 +1,6 @@ +import type { NextApiRequest, NextApiResponse } from 'next' +import getProfiles from 'utils/shared/profiles' + +export default async (req: NextApiRequest, res: NextApiResponse) => { + return res.json(await getProfiles()) +} \ No newline at end of file diff --git a/pages/index.tsx b/pages/index.tsx new file mode 100644 index 0000000..7505871 --- /dev/null +++ b/pages/index.tsx @@ -0,0 +1,30 @@ +import ButtonGrid from "components/ButtonGrid"; +import Lanyard from "components/Lanyard"; +import Title from "components/Title"; +import getProfiles from "utils/shared/profiles"; +import { SocialButton } from "utils/types"; +import styles from "styles/Index.module.sass"; + +export async function getStaticProps() { + const profiles = await getProfiles(); + return { + props: { + profiles, + }, + }; +} + +const IndexPage = (props: { profiles: SocialButton[] }) => ( + <> +
+ + <div> + <p>Profiles</p> + <ButtonGrid Buttons={props.profiles} /> + </div> + </div> + <Lanyard /> + </> +); + +export default IndexPage; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..cca2ac8 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,704 @@ +lockfileVersion: 5.4 + +specifiers: + '@react-ui-org/react-ui': ^0.47.0 + '@supabase/supabase-js': ^1.35.4 + '@types/node': ^18.0.5 + '@types/react': ^18.0.15 + '@types/react-dom': ^18.0.6 + next: ^12.2.2 + react: ^18.2.0 + react-dom: ^18.2.0 + react-use-lanyard: ^0.1.2 + sass: ^1.53.0 + typescript: ^4.7.4 + use-lanyard: ^1.1.0 + +dependencies: + '@react-ui-org/react-ui': 0.47.0_biqbaboplfbrettd7655fr4n2y + '@supabase/supabase-js': 1.35.4 + next: 12.2.2_b7sksnfkdyiidz7vzaadim75qm + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-use-lanyard: 0.1.2_react@18.2.0 + sass: 1.53.0 + use-lanyard: 1.1.0_react@18.2.0 + +devDependencies: + '@types/node': 18.0.5 + '@types/react': 18.0.15 + '@types/react-dom': 18.0.6 + typescript: 4.7.4 + +packages: + + /@next/env/12.2.2: + resolution: {integrity: sha512-BqDwE4gDl1F608TpnNxZqrCn6g48MBjvmWFEmeX5wEXDXh3IkAOw6ASKUgjT8H4OUePYFqghDFUss5ZhnbOUjw==} + dev: false + + /@next/swc-android-arm-eabi/12.2.2: + resolution: {integrity: sha512-VHjuCHeq9qCprUZbsRxxM/VqSW8MmsUtqB5nEpGEgUNnQi/BTm/2aK8tl7R4D0twGKRh6g1AAeFuWtXzk9Z/vQ==} + engines: {node: '>= 10'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@next/swc-android-arm64/12.2.2: + resolution: {integrity: sha512-v5EYzXUOSv0r9mO/2PX6mOcF53k8ndlu9yeFHVAWW1Dhw2jaJcvTRcCAwYYN8Q3tDg0nH3NbEltJDLKmcJOuVA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@next/swc-darwin-arm64/12.2.2: + resolution: {integrity: sha512-JCoGySHKGt+YBk7xRTFGx1QjrnCcwYxIo3yGepcOq64MoiocTM3yllQWeOAJU2/k9MH0+B5E9WUSme4rOCBbpA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@next/swc-darwin-x64/12.2.2: + resolution: {integrity: sha512-dztDtvfkhUqiqpXvrWVccfGhLe44yQ5tQ7B4tBfnsOR6vxzI9DNPHTlEOgRN9qDqTAcFyPxvg86mn4l8bB9Jcw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@next/swc-freebsd-x64/12.2.2: + resolution: {integrity: sha512-JUnXB+2xfxqsAvhFLPJpU1NeyDsvJrKoOjpV7g3Dxbno2Riu4tDKn3kKF886yleAuD/1qNTUCpqubTvbbT2VoA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm-gnueabihf/12.2.2: + resolution: {integrity: sha512-XeYC/qqPLz58R4pjkb+x8sUUxuGLnx9QruC7/IGkK68yW4G17PHwKI/1njFYVfXTXUukpWjcfBuauWwxp9ke7Q==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-gnu/12.2.2: + resolution: {integrity: sha512-d6jT8xgfKYFkzR7J0OHo2D+kFvY/6W8qEo6/hmdrTt6AKAqxs//rbbcdoyn3YQq1x6FVUUd39zzpezZntg9Naw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-musl/12.2.2: + resolution: {integrity: sha512-rIZRFxI9N/502auJT1i7coas0HTHUM+HaXMyJiCpnY8Rimbo0495ir24tzzHo3nQqJwcflcPTwEh/DV17sdv9A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-gnu/12.2.2: + resolution: {integrity: sha512-ir1vNadlUDj7eQk15AvfhG5BjVizuCHks9uZwBfUgT5jyeDCeRvaDCo1+Q6+0CLOAnYDR/nqSCvBgzG2UdFh9A==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-musl/12.2.2: + resolution: {integrity: sha512-bte5n2GzLN3O8JdSFYWZzMgEgDHZmRz5wiispiiDssj4ik3l8E7wq/czNi8RmIF+ioj2sYVokUNa/ekLzrESWw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-arm64-msvc/12.2.2: + resolution: {integrity: sha512-ZUGCmcDmdPVSAlwJ/aD+1F9lYW8vttseiv4n2+VCDv5JloxiX9aY32kYZaJJO7hmTLNrprvXkb4OvNuHdN22Jg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-ia32-msvc/12.2.2: + resolution: {integrity: sha512-v7ykeEDbr9eXiblGSZiEYYkWoig6sRhAbLKHUHQtk8vEWWVEqeXFcxmw6LRrKu5rCN1DY357UlYWToCGPQPCRA==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-x64-msvc/12.2.2: + resolution: {integrity: sha512-2D2iinWUL6xx8D9LYVZ5qi7FP6uLAoWymt8m8aaG2Ld/Ka8/k723fJfiklfuAcwOxfufPJI+nRbT5VcgHGzHAQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@react-ui-org/react-ui/0.47.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-3WBzRtiAm7hjGp4/5HPT3jB2piXLEfkah3j8ESscY6rNGZjYHkL1NWNYFm09ldF12F2cmyy+k3IFnbdEE2m3KA==} + engines: {node: '>=16.14.0 <17', npm: '>=8.3.0'} + peerDependencies: + prop-types: ^15.7.2 + react: ^17.0.2 + react-dom: ^17.0.2 + dependencies: + normalize.css: 8.0.1 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: false + + /@supabase/functions-js/1.3.4: + resolution: {integrity: sha512-yYVgkECjv7IZEBKBI3EB5Q7R1p0FJ10g8Q9N7SWKIHUU6i6DnbEGHIMFLyQRm1hmiNWD8fL7bRVEYacmTRJhHw==} + dependencies: + cross-fetch: 3.1.5 + transitivePeerDependencies: + - encoding + dev: false + + /@supabase/gotrue-js/1.22.21: + resolution: {integrity: sha512-AhsbBU+5j7BKSqfpLDkEcxy3ruDD+J+dHaYxXGHNWiiIJBYtK2jmNcMYA7M30MYjajnhoILJFC7LtHWl1lWj2Q==} + dependencies: + cross-fetch: 3.1.5 + transitivePeerDependencies: + - encoding + dev: false + + /@supabase/postgrest-js/0.37.4: + resolution: {integrity: sha512-x+c2rk1fz9s6f1PrGxCJ0QTUgXPDI0G3ngIqD5sSiXhhCyfl8Q5V92mXl2EYtlDhkiUkjFNrOZFhXVbXOHgvDw==} + dependencies: + cross-fetch: 3.1.5 + transitivePeerDependencies: + - encoding + dev: false + + /@supabase/realtime-js/1.7.3: + resolution: {integrity: sha512-iNUWhVeYRi5+XUlW2zJ7ccGfhI6caLxcn2t6VuQK3OTJNzXdVXeKb25nffLx1g4F7Ty6VM8Xiue7i0z0cWG3pQ==} + dependencies: + '@types/phoenix': 1.5.4 + websocket: 1.0.34 + transitivePeerDependencies: + - supports-color + dev: false + + /@supabase/storage-js/1.7.2: + resolution: {integrity: sha512-HX4HAfLUJznVgAwiKVgdTe5QD0bpUcqgc0hpk/s5Uy8qoe1tHZAc5qE9kI+tqk7rQKyymFpiA7+bAHlzyZXxxQ==} + dependencies: + cross-fetch: 3.1.5 + transitivePeerDependencies: + - encoding + dev: false + + /@supabase/supabase-js/1.35.4: + resolution: {integrity: sha512-9krwmuG3hdoS7SfM1UmCIw88aW9V1WW2Zx91tofdnmQraWKfk5e2fIKfp+Wjb9owq7JIkuUIA/qziVs2qX0lLQ==} + dependencies: + '@supabase/functions-js': 1.3.4 + '@supabase/gotrue-js': 1.22.21 + '@supabase/postgrest-js': 0.37.4 + '@supabase/realtime-js': 1.7.3 + '@supabase/storage-js': 1.7.2 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /@swc/helpers/0.4.2: + resolution: {integrity: sha512-556Az0VX7WR6UdoTn4htt/l3zPQ7bsQWK+HqdG4swV7beUCxo/BqmvbOpUkTIm/9ih86LIf1qsUnywNL3obGHw==} + dependencies: + tslib: 2.4.0 + dev: false + + /@types/node/18.0.5: + resolution: {integrity: sha512-En7tneq+j0qAiVwysBD79y86MT3ModuoIJbe7JXp+sb5UAjInSShmK3nXXMioBzfF7rXC12hv12d4IyCVwN4dA==} + dev: true + + /@types/phoenix/1.5.4: + resolution: {integrity: sha512-L5eZmzw89eXBKkiqVBcJfU1QGx9y+wurRIEgt0cuLH0hwNtVUxtx+6cu0R2STwWj468sjXyBYPYDtGclUd1kjQ==} + dev: false + + /@types/prop-types/15.7.5: + resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + dev: true + + /@types/react-dom/18.0.6: + resolution: {integrity: sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==} + dependencies: + '@types/react': 18.0.15 + dev: true + + /@types/react/18.0.15: + resolution: {integrity: sha512-iz3BtLuIYH1uWdsv6wXYdhozhqj20oD4/Hk2DNXIn1kFsmp9x8d9QB6FnPhfkbhd2PgEONt9Q1x/ebkwjfFLow==} + dependencies: + '@types/prop-types': 15.7.5 + '@types/scheduler': 0.16.2 + csstype: 3.1.0 + dev: true + + /@types/scheduler/0.16.2: + resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} + dev: true + + /anymatch/3.1.2: + resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: false + + /binary-extensions/2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + dev: false + + /braces/3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: false + + /bufferutil/4.0.6: + resolution: {integrity: sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==} + engines: {node: '>=6.14.2'} + requiresBuild: true + dependencies: + node-gyp-build: 4.5.0 + dev: false + + /caniuse-lite/1.0.30001367: + resolution: {integrity: sha512-XDgbeOHfifWV3GEES2B8rtsrADx4Jf+juKX2SICJcaUhjYBO3bR96kvEIHa15VU6ohtOhBZuPGGYGbXMRn0NCw==} + dev: false + + /chokidar/3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.2 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.2 + dev: false + + /cross-fetch/3.1.5: + resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==} + dependencies: + node-fetch: 2.6.7 + transitivePeerDependencies: + - encoding + dev: false + + /csstype/3.1.0: + resolution: {integrity: sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==} + dev: true + + /d/1.0.1: + resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} + dependencies: + es5-ext: 0.10.61 + type: 1.2.0 + dev: false + + /debug/2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: false + + /es5-ext/0.10.61: + resolution: {integrity: sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA==} + engines: {node: '>=0.10'} + requiresBuild: true + dependencies: + es6-iterator: 2.0.3 + es6-symbol: 3.1.3 + next-tick: 1.1.0 + dev: false + + /es6-iterator/2.0.3: + resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} + dependencies: + d: 1.0.1 + es5-ext: 0.10.61 + es6-symbol: 3.1.3 + dev: false + + /es6-symbol/3.1.3: + resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==} + dependencies: + d: 1.0.1 + ext: 1.6.0 + dev: false + + /ext/1.6.0: + resolution: {integrity: sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==} + dependencies: + type: 2.6.1 + dev: false + + /fill-range/7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: false + + /fsevents/2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /glob-parent/5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: false + + /immutable/4.1.0: + resolution: {integrity: sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==} + dev: false + + /is-binary-path/2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + dev: false + + /is-extglob/2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: false + + /is-glob/4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: false + + /is-number/7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: false + + /is-typedarray/1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + dev: false + + /js-tokens/4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: false + + /loose-envify/1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + dependencies: + js-tokens: 4.0.0 + dev: false + + /ms/2.0.0: + resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=} + dev: false + + /nanoid/3.3.4: + resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: false + + /next-tick/1.1.0: + resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + dev: false + + /next/12.2.2_b7sksnfkdyiidz7vzaadim75qm: + resolution: {integrity: sha512-zAYFY45aBry/PlKONqtlloRFqU/We3zWYdn2NoGvDZkoYUYQSJC8WMcalS5C19MxbCZLUVCX7D7a6gTGgl2yLg==} + engines: {node: '>=12.22.0'} + hasBin: true + peerDependencies: + fibers: '>= 3.1.0' + node-sass: ^6.0.0 || ^7.0.0 + react: ^17.0.2 || ^18.0.0-0 + react-dom: ^17.0.2 || ^18.0.0-0 + sass: ^1.3.0 + peerDependenciesMeta: + fibers: + optional: true + node-sass: + optional: true + sass: + optional: true + dependencies: + '@next/env': 12.2.2 + '@swc/helpers': 0.4.2 + caniuse-lite: 1.0.30001367 + postcss: 8.4.5 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + sass: 1.53.0 + styled-jsx: 5.0.2_react@18.2.0 + use-sync-external-store: 1.1.0_react@18.2.0 + optionalDependencies: + '@next/swc-android-arm-eabi': 12.2.2 + '@next/swc-android-arm64': 12.2.2 + '@next/swc-darwin-arm64': 12.2.2 + '@next/swc-darwin-x64': 12.2.2 + '@next/swc-freebsd-x64': 12.2.2 + '@next/swc-linux-arm-gnueabihf': 12.2.2 + '@next/swc-linux-arm64-gnu': 12.2.2 + '@next/swc-linux-arm64-musl': 12.2.2 + '@next/swc-linux-x64-gnu': 12.2.2 + '@next/swc-linux-x64-musl': 12.2.2 + '@next/swc-win32-arm64-msvc': 12.2.2 + '@next/swc-win32-ia32-msvc': 12.2.2 + '@next/swc-win32-x64-msvc': 12.2.2 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + dev: false + + /node-fetch/2.6.7: + resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: false + + /node-gyp-build/4.5.0: + resolution: {integrity: sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==} + hasBin: true + dev: false + + /normalize-path/3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: false + + /normalize.css/8.0.1: + resolution: {integrity: sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==} + dev: false + + /picocolors/1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: false + + /picomatch/2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: false + + /postcss/8.4.5: + resolution: {integrity: sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.4 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: false + + /react-dom/18.2.0_react@18.2.0: + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 + dependencies: + loose-envify: 1.4.0 + react: 18.2.0 + scheduler: 0.23.0 + dev: false + + /react-use-lanyard/0.1.2_react@18.2.0: + resolution: {integrity: sha512-QScCarw4MQelEhjcQO9HvTKWUfpIvt+ZcMPvOOaaDRJk/QNPml27rNzILM7k4TrhrevSuMmgF+3WJtTcUlqidA==} + peerDependencies: + react: '>=16' + dependencies: + react: 18.2.0 + swr: 1.3.0_react@18.2.0 + tslib: 2.4.0 + dev: false + + /react/18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + dev: false + + /readdirp/3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: false + + /sass/1.53.0: + resolution: {integrity: sha512-zb/oMirbKhUgRQ0/GFz8TSAwRq2IlR29vOUJZOx0l8sV+CkHUfHa4u5nqrG+1VceZp7Jfj59SVW9ogdhTvJDcQ==} + engines: {node: '>=12.0.0'} + hasBin: true + dependencies: + chokidar: 3.5.3 + immutable: 4.1.0 + source-map-js: 1.0.2 + dev: false + + /scheduler/0.23.0: + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + dependencies: + loose-envify: 1.4.0 + dev: false + + /source-map-js/1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + dev: false + + /styled-jsx/5.0.2_react@18.2.0: + resolution: {integrity: sha512-LqPQrbBh3egD57NBcHET4qcgshPks+yblyhPlH2GY8oaDgKs8SK4C3dBh3oSJjgzJ3G5t1SYEZGHkP+QEpX9EQ==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + dependencies: + react: 18.2.0 + dev: false + + /swr/1.3.0_react@18.2.0: + resolution: {integrity: sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw==} + peerDependencies: + react: ^16.11.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + dev: false + + /to-regex-range/5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: false + + /tr46/0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: false + + /tslib/2.4.0: + resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} + dev: false + + /type/1.2.0: + resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==} + dev: false + + /type/2.6.1: + resolution: {integrity: sha512-OvgH5rB0XM+iDZGQ1Eg/o7IZn0XYJFVrN/9FQ4OWIYILyJJgVP2s1hLTOFn6UOZoDUI/HctGa0PFlE2n2HW3NQ==} + dev: false + + /typedarray-to-buffer/3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + dependencies: + is-typedarray: 1.0.0 + dev: false + + /typescript/4.7.4: + resolution: {integrity: sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==} + engines: {node: '>=4.2.0'} + hasBin: true + dev: true + + /use-lanyard/1.1.0_react@18.2.0: + resolution: {integrity: sha512-9yfDnDKCNYR/VIUKSq5V+ACSwZECNrA1ogduigZzF8AuEVwCjrckFBL56dLQHISqsPiB5MfypgpVU+c757EZ3g==} + engines: {node: '>=14'} + peerDependencies: + react: '>=17' + dependencies: + react: 18.2.0 + swr: 1.3.0_react@18.2.0 + dev: false + + /use-sync-external-store/1.1.0_react@18.2.0: + resolution: {integrity: sha512-SEnieB2FPKEVne66NpXPd1Np4R1lTNKfjuy3XdIoPQKYBAFdzbzSZlSn1KJZUiihQLQC5Znot4SBz1EOTBwQAQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + dev: false + + /utf-8-validate/5.0.9: + resolution: {integrity: sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==} + engines: {node: '>=6.14.2'} + requiresBuild: true + dependencies: + node-gyp-build: 4.5.0 + dev: false + + /webidl-conversions/3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: false + + /websocket/1.0.34: + resolution: {integrity: sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==} + engines: {node: '>=4.0.0'} + dependencies: + bufferutil: 4.0.6 + debug: 2.6.9 + es5-ext: 0.10.61 + typedarray-to-buffer: 3.1.5 + utf-8-validate: 5.0.9 + yaeti: 0.0.6 + transitivePeerDependencies: + - supports-color + dev: false + + /whatwg-url/5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + dev: false + + /yaeti/0.0.6: + resolution: {integrity: sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==} + engines: {node: '>=0.10.32'} + dev: false diff --git a/public/icons.svg b/public/icons.svg new file mode 100644 index 0000000..0a21649 --- /dev/null +++ b/public/icons.svg @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><symbol fill="none" stroke="currentColor" viewBox="0 0 16 16" id="arrow-left" xmlns="http://www.w3.org/2000/svg"> + <path d="m7.25 3.75-4.5 4.5 4.5 4.5m-4.5-4.5h10.5" fill="none" stroke="currentColor"/> +</symbol><symbol fill="none" stroke="currentColor" viewBox="0 0 16 16" id="arrow-right" xmlns="http://www.w3.org/2000/svg"> + <path d="m8.75 3.75 4.5 4.5-4.5 4.5m-6-4.5h10.5" fill="none" stroke="currentColor"/> +</symbol><symbol fill="none" stroke="currentColor" viewBox="0 0 16 16" id="arrow-up-right" xmlns="http://www.w3.org/2000/svg"> + <path d="m5.25 4.25h6.5v6.5m0-6.5-7.5 7.5" fill="none" stroke="currentColor"/> +</symbol><symbol fill="none" stroke="currentColor" viewBox="0 0 16 16" id="asterisk" xmlns="http://www.w3.org/2000/svg"> + <path d="m7.75 1.25v14m-6-10.5 12 7m-12 0 12-7" fill="none" stroke="currentColor"/> +</symbol><symbol fill="none" stroke="currentColor" viewBox="0 0 16 16" id="chevron-left" xmlns="http://www.w3.org/2000/svg"> + <path d="M 11.25,14.25 5,8 11.25,1.75" fill="none" stroke="currentColor"/> +</symbol><symbol fill="none" stroke="currentColor" viewBox="0 0 16 16" id="chevron-right" xmlns="http://www.w3.org/2000/svg"> + <path d="M 4.75,14.25 11,8 4.75,1.75" fill="none" stroke="currentColor"/> +</symbol><symbol fill="none" stroke="currentColor" viewBox="0 0 16 16" id="envelope" xmlns="http://www.w3.org/2000/svg"> + <path d="m1.25 3.5c0-0.4155 0.3345-0.75 0.75-0.75h12c0.4155 0 0.75 0.3345 0.75 0.75v8.5c0 0.4155-0.3345 0.75-0.75 0.75h-12c-0.4155 0-0.75-0.3345-0.75-0.75zm0 0.25 5.2845 4.3681c1.0065 0.83198 1.9181 0.82912 2.9676-0.03704l5.2479-4.3311" fill="none" stroke="currentColor"/> +</symbol><symbol fill="none" stroke="currentColor" viewBox="0 0 16 16" id="git-branch" xmlns="http://www.w3.org/2000/svg"> + <path d="m12.25 5.75c0 3.5899-2.9101 6.5-6.5 6.5m3e-7 0c0 1.1046-0.89543 2-2 2s-2-0.89543-2-2 0.89543-2 2-2 2 0.89543 2 2zm8.5-8.5c0 1.1046-0.89543 2-2 2s-2-0.89543-2-2 0.89543-2 2-2 2 0.89543 2 2zm-10.5 6.4998v-7.9998" fill="none" stroke="currentColor"/> +</symbol><symbol fill="none" stroke="currentColor" viewBox="0 0 16 16" id="globe" xmlns="http://www.w3.org/2000/svg"> + <path d="m1.75 8.25h12.5m-4 0a2.25 6.5 0 0 1-2.25 6.5 2.25 6.5 0 0 1-2.25-6.5 2.25 6.5 0 0 1 2.25-6.5 2.25 6.5 0 0 1 2.25 6.5zm4.25 0a6.5 6.5 0 0 1-6.5 6.5 6.5 6.5 0 0 1-6.5-6.5 6.5 6.5 0 0 1 6.5-6.5 6.5 6.5 0 0 1 6.5 6.5z" fill="none" stroke="currentColor"/> +</symbol><symbol fill="none" stroke="currentColor" viewBox="0 0 16 16" id="graph" xmlns="http://www.w3.org/2000/svg"> + <path d="m5.25 13c0 0.9665-0.7835 1.75-1.75 1.75s-1.75-0.7835-1.75-1.75 0.7835-1.75 1.75-1.75 1.75 0.7835 1.75 1.75zm9-3.5c0 0.9665-0.7835 1.75-1.75 1.75s-1.75-0.7835-1.75-1.75c0-0.9665 0.7835-1.75 1.75-1.75s1.75 0.7835 1.75 1.75zm-7-6.5c0 0.9665-0.7835 1.75-1.75 1.75s-1.75-0.7835-1.75-1.75 0.7835-1.75 1.75-1.75 1.75 0.7835 1.75 1.75zm-2.0942 9.4126 5.6868-2.3235m-4.163-5.7868 4.5859 3.9307m-6.0863-3.5029-1.3496 6.543" fill="none" stroke="currentColor"/> +</symbol><symbol fill="none" stroke="currentColor" viewBox="0 0 16 16" id="hash" xmlns="http://www.w3.org/2000/svg"> + <path d="m4.7501 14.25 0.99984-12m4 12 1.0002-12m-8.5001 3.5h11m-11 5h11" fill="none" stroke="currentColor"/> +</symbol><symbol fill="none" stroke="currentColor" viewBox="0 0 16 16" id="image" xmlns="http://www.w3.org/2000/svg"> + <path d="m6.25 5.5a0.75 0.75 0 0 1-0.75 0.75 0.75 0.75 0 0 1-0.75-0.75 0.75 0.75 0 0 1 0.75-0.75 0.75 0.75 0 0 1 0.75 0.75zm-3 8.75 7.5-7.5 3.5 3.5m-11.75-8.5h11c0.4155 0 0.75 0.3345 0.75 0.75v11c0 0.4155-0.3345 0.75-0.75 0.75h-11c-0.4155 0-0.75-0.3345-0.75-0.75v-11c0-0.4155 0.3345-0.75 0.75-0.75z" fill="none" stroke="currentColor"/> +</symbol><symbol viewBox="0 0 16 16" id="link" xmlns="http://www.w3.org/2000/svg"> + <path d="m8.25 3.15 0.4519-0.4481c1.2692-1.2692 3.327-1.2692 4.5962 0s1.2692 3.327 0 4.5962l-2 2c-1.2692 1.2692-3.327 1.2692-4.5962 0" fill="none" stroke="currentColor"/> + <path d="m7.75 12.85-0.45662 0.45281c-1.2692 1.2692-3.327 1.2692-4.5962 0s-1.2692-3.327 0-4.5962l2-2c1.2692-1.2692 3.327-1.2692 4.5962 0" fill="none" stroke="currentColor"/> +</symbol><symbol viewBox="0 0 16 16" id="messages" xmlns="http://www.w3.org/2000/svg"> + <path d="m1.5 1.25h9c0.4155 0 0.75 0.3345 0.75 0.75v6.9999c0 0.4155-0.3345 0.75-0.75 0.75h-7.25l-2.5 2.5001v-10.25c0-0.4155 0.3345-0.75 0.75-0.75z" fill="none" stroke="currentColor"/> + <path d="m5.25 12.75h7.5l2.5 2.5001v-10.25c0-0.4155-0.3345-0.75-0.75-0.75h-0.25" fill="none" stroke="currentColor"/> +</symbol><symbol fill="none" stroke="currentColor" viewBox="0 0 16 16" id="parallelogram" xmlns="http://www.w3.org/2000/svg"> + <path d="m15.25 4.25-5 7.5h-9.5l5-7.5z" fill="none" stroke="currentColor"/> +</symbol><symbol viewBox="0 0 16 16" id="shuffle" xmlns="http://www.w3.org/2000/svg"> + <path d="m2.75 2.75 3 3" fill="none" stroke="currentColor"/> + <path d="m9.75 2.25h4v4m-11 7 11-11" fill="none" stroke="currentColor"/> + <path d="m10.25 10.25 3.5 3.5m-4 0h4v-4" fill="none" stroke="currentColor"/> +</symbol><symbol viewBox="0 0 16 16" id="smile" xmlns="http://www.w3.org/2000/svg"> + <path d="m11.309 9.7658c-0.63143 1.1808-1.8764 1.9842-3.3091 1.9842-1.4381 0-2.6872-0.80955-3.3163-1.9978" fill="none" stroke="currentColor"/> + <circle cx="8" cy="8" r="6.75" fill="none" stroke="currentColor"/> + <path d="m10.25 5.75v1.5" fill="none" stroke="currentColor"/> + <path d="m5.75 5.75v1.5" fill="none" stroke="currentColor"/> +</symbol><symbol fill="none" stroke="currentColor" viewBox="0 0 16 16" id="x" xmlns="http://www.w3.org/2000/svg"> + <path d="m3 3 10 10m-10 0 10-10" fill="none" stroke="currentColor"/> +</symbol></svg> \ No newline at end of file diff --git a/styles/Button.module.sass b/styles/Button.module.sass new file mode 100644 index 0000000..1d9a4bf --- /dev/null +++ b/styles/Button.module.sass @@ -0,0 +1,29 @@ +.button + display: flex + background-color: #191919 + align-items: center + transition: all .2s + &:hover + background-color: white + color: black + transform: translateY(-0.3em) + +.icon + padding: 10px + +.link + padding: 10px + margin-left: auto + +.platform_username + line-height: .5rem + padding-left: 1rem + .platform + font-weight: lighter + .username + color: grey + +.grid + display: grid + gap: .5rem + grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)) diff --git a/styles/Index.module.sass b/styles/Index.module.sass new file mode 100644 index 0000000..dec09d2 --- /dev/null +++ b/styles/Index.module.sass @@ -0,0 +1,4 @@ +.center + max-width: 45rem + margin-left: auto + margin-right: auto \ No newline at end of file diff --git a/styles/Lanyard.module.sass b/styles/Lanyard.module.sass new file mode 100644 index 0000000..37465b2 --- /dev/null +++ b/styles/Lanyard.module.sass @@ -0,0 +1,53 @@ +.container + position: absolute + bottom: 0 + left: 0 + margin: 10px + display: inline-flex + align-items: center + background-color: #222 + max-width: 50rem + border-radius: .5rem + animation: skeleton-loading 2s linear infinite alternate + +.albumart + border-radius: 20px + padding: 10px !important + +.artist_song + line-height: .5rem + padding-left: 1rem + padding-right: 1rem + .artist + font-size: .8rem + +.badge:after + content: '' + position: absolute + top: -5px + right: -5px + font-size: .7em + background: #8cff96b4 + color: white + width: 18px + height: 18px + text-align: center + line-height: 18px + border-radius: 50% + box-shadow: 0 0 1px #333 + animation: pulse 4s linear infinite alternate + +@keyframes pulse + 0% + transform: scale(1) + 50% + transform: scale(1.4) + 100% + transform: scale(1) + +@keyframes skeleton-loading + 0% + background-color: #191919 + + 100% + background-color: #222 diff --git a/styles/Title.module.sass b/styles/Title.module.sass new file mode 100644 index 0000000..00f7e7d --- /dev/null +++ b/styles/Title.module.sass @@ -0,0 +1,5 @@ +.title + display: inline-flex + font-size: 3rem + margin-top: 5rem + background-image: linear-gradient(to top, transparent 0.15em, rgb(0, 0, 0) 0.15em, rgb(0, 0, 0) 0.6em, transparent 0.6em) \ No newline at end of file diff --git a/styles/fonts/Flachbau.ttf b/styles/fonts/Flachbau.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a453cca411987fd961ee26a5df29c9a13e109fcc GIT binary patch literal 69168 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 XZrp_<_cGFSRHd`({2o$br~1DE7u*KG literal 0 HcmV?d00001 diff --git a/styles/main.sass b/styles/main.sass new file mode 100644 index 0000000..77e27f3 --- /dev/null +++ b/styles/main.sass @@ -0,0 +1,17 @@ +a + text-decoration: none + color: white + + // padding: 0 + // margin: 0 + +body + background: #111 + color: white + font-family: "Flachbau" + + +@font-face + font-family: "Flachbau" + src: local("fonts/Flachbau.ttf") format("truetype") + src: url("fonts/Flachbau.ttf") format("truetype") diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..97b74f0 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,31 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "target": "es5", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "skipLibCheck": true, + "strict": false, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "incremental": true, + "esModuleInterop": true, + "module": "ESNext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve" + }, + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx" + ], + "exclude": [ + "node_modules" + ] +} diff --git a/utils/shared/lanyard.ts b/utils/shared/lanyard.ts new file mode 100644 index 0000000..ff3afef --- /dev/null +++ b/utils/shared/lanyard.ts @@ -0,0 +1,7 @@ +const id = process.env.NEXT_DISCORD_ID || "318044130796109825" + +export async function jsonyard() { + return await fetch( + `https://api.lanyard.rest/v1/users/${id}`, + ).then((r) => r.json()); +} diff --git a/utils/shared/profiles.ts b/utils/shared/profiles.ts new file mode 100644 index 0000000..8295eef --- /dev/null +++ b/utils/shared/profiles.ts @@ -0,0 +1,7 @@ +import supabase from "utils/supabase" + +export default async function getProfiles() { + let {data,error} = await supabase.from("void_socials").select() + if(error) throw error + return data +} \ No newline at end of file diff --git a/utils/supabase.ts b/utils/supabase.ts new file mode 100644 index 0000000..3d1481d --- /dev/null +++ b/utils/supabase.ts @@ -0,0 +1,5 @@ +import { createClient } from "@supabase/supabase-js"; + +const supabase = createClient(process.env.SUPABASE_URL, process.env.SUPABASE_ANON_KEY) + +export default supabase \ No newline at end of file diff --git a/utils/types.ts b/utils/types.ts new file mode 100644 index 0000000..003bed9 --- /dev/null +++ b/utils/types.ts @@ -0,0 +1,28 @@ +export type SocialButton = { + id: number; + icon: Icon; + platform: string; + username: string; + url?: string; +}; + +export type Icon = + | "x" + | "smile" + | "shuffle" + | "parallelogram" + | "messages" + | "link" + | "image" + | "hash" + | "graph" + | "globe" + | "git-branch" + | "envelope" + | "chevron-right" + | "chevron-left" + | "asterisk" + | "arrow-up-right" + | "arrow-right" + | "spotify" + | "arrow-right";