diff --git a/client/.vscode/settings.json b/client/.vscode/settings.json index c3d9d94c..e11793fd 100644 --- a/client/.vscode/settings.json +++ b/client/.vscode/settings.json @@ -1,4 +1,4 @@ { - "typescript.tsdk": "./node_modules/typescript/lib", + "typescript.tsdk": "node_modules/.pnpm/typescript@4.6.4/node_modules/typescript/lib", "typescript.enablePromptUseWorkspaceTsdk": true } \ No newline at end of file diff --git a/client/app/layout.tsx b/client/app/layout.tsx new file mode 100644 index 00000000..78994a13 --- /dev/null +++ b/client/app/layout.tsx @@ -0,0 +1,55 @@ +import "styles/globals.css" +import { ServerThemeProvider } from "next-themes" + +interface RootLayoutProps { + children: React.ReactNode +} + +export default function RootLayout({ children }: RootLayoutProps) { + return ( + + + + + + + + + + + + + + + Drift + + {children} + + + ) +} diff --git a/client/app/page.tsx b/client/app/page.tsx new file mode 100644 index 00000000..e701f3f9 --- /dev/null +++ b/client/app/page.tsx @@ -0,0 +1,7 @@ +export default function Page() { + return ( + <> +

Hello, world!

+ + ) +} diff --git a/client/middleware.ts b/client/middleware.ts index 982f0c00..0e4c6f26 100644 --- a/client/middleware.ts +++ b/client/middleware.ts @@ -36,19 +36,19 @@ export function middleware(req: NextRequest, event: NextFetchEvent) { return resp } } else if (isPageRequest) { - if (signedIn) { - if ( - pathname === "/" || - pathname === "/signin" || - pathname === "/signup" - ) { - return NextResponse.redirect(getURL("new")) - } - } else if (!signedIn) { - if (pathname.startsWith("/new")) { - return NextResponse.redirect(getURL("signin")) - } - } + // if (signedIn) { + // if ( + // pathname === "/" || + // pathname === "/signin" || + // pathname === "/signup" + // ) { + // return NextResponse.redirect(getURL("new")) + // } + // } else if (!signedIn) { + // if (pathname.startsWith("/new")) { + // return NextResponse.redirect(getURL("signin")) + // } + // } if (pathname.includes("/protected/") || pathname.includes("/private/")) { const urlWithoutVisibility = pathname diff --git a/client/next.config.mjs b/client/next.config.mjs index 431b8cb7..b4fc3c6d 100644 --- a/client/next.config.mjs +++ b/client/next.config.mjs @@ -8,8 +8,8 @@ const nextConfig = { reactStrictMode: true, experimental: { // outputStandalone: true, - esmExternals: true, - // appDir: true + // esmExternals: true, + appDir: true }, webpack: (config, { dev, isServer }) => { if (!dev && !isServer) { diff --git a/client/package.json b/client/package.json index e03fded8..85013d32 100644 --- a/client/package.json +++ b/client/package.json @@ -16,16 +16,18 @@ "@types/cookie": "0.5.1", "@types/js-cookie": "3.0.2", "client-zip": "2.2.1", + "clsx": "^1.2.1", "cookie": "0.5.0", "dotenv": "16.0.0", "js-cookie": "3.0.1", - "next": "13.0.2", - "next-themes": "0.2.1", + "next": "13.0.3-canary.2", + "next-themes": "npm:@wits/next-themes@0.2.7", "rc-table": "7.24.1", "react": "18.2.0", "react-datepicker": "4.8.0", "react-dom": "18.2.0", "react-dropzone": "14.2.3", + "react-hot-toast": "^2.4.0", "react-loading-skeleton": "3.1.0", "swr": "1.3.0", "textarea-markdown-editor": "0.1.13" diff --git a/client/pages/index.tsx b/client/pages/index.backup.tsx similarity index 100% rename from client/pages/index.tsx rename to client/pages/index.backup.tsx diff --git a/client/pnpm-lock.yaml b/client/pnpm-lock.yaml index e44c8d09..fa54156c 100644 --- a/client/pnpm-lock.yaml +++ b/client/pnpm-lock.yaml @@ -11,14 +11,15 @@ specifiers: '@types/react-datepicker': 4.4.1 '@types/react-dom': 18.0.3 client-zip: 2.2.1 + clsx: ^1.2.1 cookie: 0.5.0 cross-env: 7.0.3 dotenv: 16.0.0 eslint: 8.27.0 eslint-config-next: 13.0.2 js-cookie: 3.0.1 - next: 13.0.2 - next-themes: 0.2.1 + next: 13.0.3-canary.2 + next-themes: npm:@wits/next-themes@0.2.7 next-unused: 0.0.6 prettier: 2.6.2 rc-table: 7.24.1 @@ -26,6 +27,7 @@ specifiers: react-datepicker: 4.8.0 react-dom: 18.2.0 react-dropzone: 14.2.3 + react-hot-toast: ^2.4.0 react-loading-skeleton: 3.1.0 sharp: ^0.31.2 swr: 1.3.0 @@ -39,16 +41,18 @@ dependencies: '@types/cookie': 0.5.1 '@types/js-cookie': 3.0.2 client-zip: 2.2.1 + clsx: 1.2.1 cookie: 0.5.0 dotenv: 16.0.0 js-cookie: 3.0.1 - next: 13.0.2_biqbaboplfbrettd7655fr4n2y - next-themes: 0.2.1_pknogjuzx4bv7zxtatcb2ahtsq + next: 13.0.3-canary.2_biqbaboplfbrettd7655fr4n2y + next-themes: /@wits/next-themes/0.2.7_qjr36eup74ongf7bl2iopfchwe rc-table: 7.24.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-datepicker: 4.8.0_biqbaboplfbrettd7655fr4n2y react-dom: 18.2.0_react@18.2.0 react-dropzone: 14.2.3_react@18.2.0 + react-hot-toast: 2.4.0_biqbaboplfbrettd7655fr4n2y react-loading-skeleton: 3.1.0_react@18.2.0 swr: 1.3.0_react@18.2.0 textarea-markdown-editor: 0.1.13_biqbaboplfbrettd7655fr4n2y @@ -180,8 +184,8 @@ packages: - utf-8-validate dev: true - /@next/env/13.0.2: - resolution: {integrity: sha512-Qb6WPuRriGIQ19qd6NBxpcrFOfj8ziN7l9eZUfwff5gl4zLXluqtuZPddYZM/oWjN53ZYcuRXzL+oowKyJeYtA==} + /@next/env/13.0.3-canary.2: + resolution: {integrity: sha512-Ugn4VxB+2Bd1LnWcMbjIwNcVYPoBZ8Yo6j2A3MU99pzeYq+TGtHcYPz0xyIAP3Qp7mrH5gx6PITVz7D22u8p7w==} dev: false /@next/eslint-plugin-next/13.0.2: @@ -190,8 +194,8 @@ packages: glob: 7.1.7 dev: true - /@next/swc-android-arm-eabi/13.0.2: - resolution: {integrity: sha512-X54UQCTFyOGnJP//Z71dPPlp4BCYcQL2ncikKXQcPzVpqPs4C3m+tKC8ivBNH6edAXkppwsLRz1/yQwgSZ9Swg==} + /@next/swc-android-arm-eabi/13.0.3-canary.2: + resolution: {integrity: sha512-ZZG0C+P4czfq5Zyhdouacb3w73w/iOj4KidWCpWlYfTnxlMinPoEDk04xFg5iR665ePlS2mrBnj2OfhckYcFdQ==} engines: {node: '>= 10'} cpu: [arm] os: [android] @@ -199,8 +203,8 @@ packages: dev: false optional: true - /@next/swc-android-arm64/13.0.2: - resolution: {integrity: sha512-1P00Kv8uKaLubqo7JzPrTqgFAzSOmfb8iwqJrOb9in5IvTRtNGlkR4hU0sXzqbQNM/+SaYxze6Z5ry1IDyb/cQ==} + /@next/swc-android-arm64/13.0.3-canary.2: + resolution: {integrity: sha512-0Nw4n6Eox1cCp0d9BJ5GQDgW2+8JxoF5asdOdN0E1a6ayygOfsXN/GP3VWcrpLSrx6K1XUO+lgBbCbaOjvnoxA==} engines: {node: '>= 10'} cpu: [arm64] os: [android] @@ -208,8 +212,8 @@ packages: dev: false optional: true - /@next/swc-darwin-arm64/13.0.2: - resolution: {integrity: sha512-1zGIOkInkOLRv0QQGZ+3wffYsyKI4vIy62LYTvDWUn7TAYqnmXwougp9NSLqDeagLwgsv2URrykyAFixA/YqxA==} + /@next/swc-darwin-arm64/13.0.3-canary.2: + resolution: {integrity: sha512-TkSQVEEcmCfbzotHNHGWe1PkiZZkKPg4QWylZYv8UDfRUwJwR94aJeriOqlGOTkKQ/6a+ulJrVgs50/5gTTIHg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -217,8 +221,8 @@ packages: dev: false optional: true - /@next/swc-darwin-x64/13.0.2: - resolution: {integrity: sha512-ECDAjoMP1Y90cARaelS6X+k6BQx+MikAYJ8f/eaJrLur44NIOYc9HA/dgcTp5jenguY4yT8V+HCquLjAVle6fA==} + /@next/swc-darwin-x64/13.0.3-canary.2: + resolution: {integrity: sha512-hGCarEZsaSdOWtJOUJc4Sr3oRzUjlI/G+qlyMkaceSTyYx4Xu2/OmDS1fCWxoltlimiHmlJpLnGGaxUgrZ8dkQ==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -226,8 +230,8 @@ packages: dev: false optional: true - /@next/swc-freebsd-x64/13.0.2: - resolution: {integrity: sha512-2DcL/ofQdBnQX3IoI9sjlIAyLCD1oZoUBuhrhWbejvBQjutWrI0JTEv9uG69WcxWhVMm3BCsjv8GK2/68OKp7A==} + /@next/swc-freebsd-x64/13.0.3-canary.2: + resolution: {integrity: sha512-R7WFI/whtuSB6gxmzgqFzeKbrhuSp3ut0GaQK+kvb7NUnFe9xABUksdxEU8bORjVJaADgDsCsCHSsHGqHHl7Mg==} engines: {node: '>= 10'} cpu: [x64] os: [freebsd] @@ -235,8 +239,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm-gnueabihf/13.0.2: - resolution: {integrity: sha512-Y3OQF1CSBSWW2vGkmvOIuOUNqOq8qX7f1ZpcKUVWP3/Uq++DZmVi9d18lgnSe1I3QFqc+nXWyun9ljsN83j0sw==} + /@next/swc-linux-arm-gnueabihf/13.0.3-canary.2: + resolution: {integrity: sha512-RzYf+MTdP8Rvz/fijlxsTP+1S24ziMtCtzq2Ui8Qjg7VIfD9sEuLmMQJpm0k/FscduQdZILoG+QNhD2oW893Wg==} engines: {node: '>= 10'} cpu: [arm] os: [linux] @@ -244,8 +248,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu/13.0.2: - resolution: {integrity: sha512-mNyzwsFF6kwZYEjnGicx9ksDZYEZvyzEc1BtCu8vdZi/v8UeixQwCiAT6FyYX9uxMPEkzk8qiU0t0u9gvltsKw==} + /@next/swc-linux-arm64-gnu/13.0.3-canary.2: + resolution: {integrity: sha512-8TF9UxIAZuQNf4fkyfZ1LcrqqvRI2Li0V2IO0CiCx4wg6xDqBjMH3IZoRwgY3yJ8UxdrFWf8Ec1q2WBYXcODgQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -253,8 +257,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-musl/13.0.2: - resolution: {integrity: sha512-M6SdYjWgRrY3tJBxz0663zCRPTu5BRONmxlftKWWHv9LjAJ59neTLaGj4rp0A08DkJglZIoCkLOzLrzST6TGag==} + /@next/swc-linux-arm64-musl/13.0.3-canary.2: + resolution: {integrity: sha512-Ll2nV3pbCi3qL9o+6zxEuQAqqk8yPLk1TJ7+G8fTmm1vpjMjdV8eBiXiZVGyweRBhurhHmeSdh9JtpUFuPvDRA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -262,8 +266,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-gnu/13.0.2: - resolution: {integrity: sha512-pi63RoxvG4ES1KS06Zpm0MATVIXTs/TIbLbdckeLoM40u1d3mQl/+hSSrLRSxzc2OtyL8fh92sM4gkJrQXAMAw==} + /@next/swc-linux-x64-gnu/13.0.3-canary.2: + resolution: {integrity: sha512-TARNMLz9+Ab2rEiuk/ulYULLDWw6zMc4yH2vFXdwckod9tWUyxptAMUz2umtKwyf6lmYUv4+IfZPJgUs0lr5Bw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -271,8 +275,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-musl/13.0.2: - resolution: {integrity: sha512-9Pv91gfYnDONgjtRm78n64b/c54+azeHtlnqBLTnIFWSMBDRl1/WDkhKWIj3fBGPLimtK7Tko3ULR3og9RRUPw==} + /@next/swc-linux-x64-musl/13.0.3-canary.2: + resolution: {integrity: sha512-Wbd1Ufm9NRSf+xl9kOfe5St06xHN1DHT0KrQc+cT2QKn9ZavASM/Vu2PM3gt4T/2Gqdv663WdbpEuX97wn3abQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -280,8 +284,8 @@ packages: dev: false optional: true - /@next/swc-win32-arm64-msvc/13.0.2: - resolution: {integrity: sha512-Nvewe6YZaizAkGHHprbMkYqQulBjZCHKBGKeFPwoPtOA+a2Qi4pZzc/qXFyC5/2A6Z0mr2U1zg9rd04WBYMwBw==} + /@next/swc-win32-arm64-msvc/13.0.3-canary.2: + resolution: {integrity: sha512-d/SiJzQvm+ggFhCBly4VuOUio0OXx5NKLabSw9AcxEK11/V6YGEFNVdPw1q059/eBi3S0mlRBBnowKuJiWGbtg==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -289,8 +293,8 @@ packages: dev: false optional: true - /@next/swc-win32-ia32-msvc/13.0.2: - resolution: {integrity: sha512-ZUBYGZw5G3QrqDpRq1EWi3aHmvPZM8ijK5TFL6UbH16cYQ0JpANmuG2P66KB93Qe/lWWzbeAZk/tj1XqwoCuPA==} + /@next/swc-win32-ia32-msvc/13.0.3-canary.2: + resolution: {integrity: sha512-HytAShDnSnY1FkCpsy+t2V09H1Z9ydeZeg8QrLwub26bPWAcDZe77ECVR4rdIHqP4KHBwtAOM8UIZWrexlLggw==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -298,8 +302,8 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc/13.0.2: - resolution: {integrity: sha512-fA9uW1dm7C0mEYGcKlbmLcVm2sKcye+1kPxh2cM4jVR+kQQMtHWsjIzeSpe2grQLSDan06z4n6hbr8b1c3hA8w==} + /@next/swc-win32-x64-msvc/13.0.3-canary.2: + resolution: {integrity: sha512-TPH7wQSLXbeWuwkGFASMkCmE2Q7Tt/S8gTOgC0Y4rJf1yw5K+YtubTZKmmEZ13Aq+fQtqg3NkPO9Rrq4OZpuGw==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -491,6 +495,18 @@ packages: eslint-visitor-keys: 3.3.0 dev: true + /@wits/next-themes/0.2.7_qjr36eup74ongf7bl2iopfchwe: + resolution: {integrity: sha512-CpmNH3RRqf2w0i1Xbrz5GKNE/d5gMq1oBlGpofY9LWcjH225nUgrxP15wKRITRAbn68ERDbsBGEBiaRECTmQag==} + peerDependencies: + next: '*' + react: '*' + react-dom: '*' + dependencies: + next: 13.0.3-canary.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: false + /acorn-jsx/5.3.2_acorn@8.8.1: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -760,6 +776,11 @@ packages: engines: {node: '>=0.8'} dev: true + /clsx/1.2.1: + resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} + engines: {node: '>=6'} + dev: false + /color-convert/1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: @@ -1757,6 +1778,12 @@ packages: minimist: 1.2.7 dev: true + /goober/2.1.11: + resolution: {integrity: sha512-5SS2lmxbhqH0u9ABEWq7WPU69a4i2pYcHeCxqaNq6Cw3mnrF0ghWNM4tEGid4dKy8XNIAUbuThuozDHHKJVh3A==} + peerDependencies: + csstype: ^3.0.10 + dev: false + /graceful-fs/4.2.10: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} dev: true @@ -2380,18 +2407,6 @@ packages: dev: true optional: true - /next-themes/0.2.1_pknogjuzx4bv7zxtatcb2ahtsq: - resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==} - peerDependencies: - next: '*' - react: '*' - react-dom: '*' - dependencies: - next: 13.0.2_biqbaboplfbrettd7655fr4n2y - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - dev: false - /next-unused/0.0.6: resolution: {integrity: sha512-dHFNNBanFq4wvYrULtsjfWyZ6BzOnr5VYI9EYMGAZYF2vkAhFpj2JOuT5Wu2o3LbFSG92PmAZnSUF/LstF82pA==} hasBin: true @@ -2403,8 +2418,8 @@ packages: - supports-color dev: true - /next/13.0.2_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-uQ5z5e4D9mOe8+upy6bQdYYjo/kk1v3jMW87kTy2TgAyAsEO+CkwRnMgyZ4JoHEnhPZLHwh7dk0XymRNLe1gFw==} + /next/13.0.3-canary.2_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-Qr19ElEa+ljqu56t4AoiZ6uld7jvMa9KbDFhXBcKQQ4/DaRGvLsoWDw9l3QADBhsFSegAon0NE7eI1IAP+M1pQ==} engines: {node: '>=14.6.0'} hasBin: true peerDependencies: @@ -2421,7 +2436,7 @@ packages: sass: optional: true dependencies: - '@next/env': 13.0.2 + '@next/env': 13.0.3-canary.2 '@swc/helpers': 0.4.11 caniuse-lite: 1.0.30001431 postcss: 8.4.14 @@ -2430,19 +2445,19 @@ packages: styled-jsx: 5.1.0_react@18.2.0 use-sync-external-store: 1.2.0_react@18.2.0 optionalDependencies: - '@next/swc-android-arm-eabi': 13.0.2 - '@next/swc-android-arm64': 13.0.2 - '@next/swc-darwin-arm64': 13.0.2 - '@next/swc-darwin-x64': 13.0.2 - '@next/swc-freebsd-x64': 13.0.2 - '@next/swc-linux-arm-gnueabihf': 13.0.2 - '@next/swc-linux-arm64-gnu': 13.0.2 - '@next/swc-linux-arm64-musl': 13.0.2 - '@next/swc-linux-x64-gnu': 13.0.2 - '@next/swc-linux-x64-musl': 13.0.2 - '@next/swc-win32-arm64-msvc': 13.0.2 - '@next/swc-win32-ia32-msvc': 13.0.2 - '@next/swc-win32-x64-msvc': 13.0.2 + '@next/swc-android-arm-eabi': 13.0.3-canary.2 + '@next/swc-android-arm64': 13.0.3-canary.2 + '@next/swc-darwin-arm64': 13.0.3-canary.2 + '@next/swc-darwin-x64': 13.0.3-canary.2 + '@next/swc-freebsd-x64': 13.0.3-canary.2 + '@next/swc-linux-arm-gnueabihf': 13.0.3-canary.2 + '@next/swc-linux-arm64-gnu': 13.0.3-canary.2 + '@next/swc-linux-arm64-musl': 13.0.3-canary.2 + '@next/swc-linux-x64-gnu': 13.0.3-canary.2 + '@next/swc-linux-x64-musl': 13.0.3-canary.2 + '@next/swc-win32-arm64-msvc': 13.0.3-canary.2 + '@next/swc-win32-ia32-msvc': 13.0.3-canary.2 + '@next/swc-win32-x64-msvc': 13.0.3-canary.2 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -2952,6 +2967,20 @@ packages: /react-fast-compare/3.2.0: resolution: {integrity: sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==} + /react-hot-toast/2.4.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-qnnVbXropKuwUpriVVosgo8QrB+IaPJCpL8oBI6Ov84uvHZ5QQcTp2qg6ku2wNfgJl6rlQXJIQU5q+5lmPOutA==} + engines: {node: '>=10'} + peerDependencies: + react: '>=16' + react-dom: '>=16' + dependencies: + goober: 2.1.11 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + transitivePeerDependencies: + - csstype + dev: false + /react-is/16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}