diff --git a/next.config.js b/next.config.js index 037166291..021655576 100644 --- a/next.config.js +++ b/next.config.js @@ -13,6 +13,7 @@ await import("./src/env.js"); /** @type {import("next").NextConfig} */ const nextConfig = { + swcMinify: true, output: process.env.DOCKER_OUTPUT ? "standalone" : undefined, images: { remotePatterns: [ diff --git a/package.json b/package.json index b303ab76e..dbec5a4ba 100644 --- a/package.json +++ b/package.json @@ -22,9 +22,8 @@ "postinstall": "prisma generate", "prepare": "husky", "lint": "biome check --apply ./src", - "email:dev": "mailpit", + "email:dev": "email dev --dir ./src/emails --port 3005", "format": "biome format --write ./src && prisma format", - "email:preview": "email preview ./src/emails", "copy:pdfjs": "node scripts/copy-pdfjs-worker.cjs", "knip": "knip", "test": "vitest" @@ -34,6 +33,7 @@ "@aws-sdk/client-s3": "^3.577.0", "@aws-sdk/s3-request-presigner": "^3.577.0", "@blocknote/react": "^0.12.2", + "@headlessui/react": "^2.1.2", "@hono/swagger-ui": "^0.4.0", "@hono/zod-openapi": "^0.15.1", "@hookform/resolvers": "^3.9.0", @@ -90,7 +90,7 @@ "lodash-es": "^4.17.21", "mime": "^4.0.3", "nanoid": "^5.0.4", - "next": "^14.2.4", + "next": "^14.2.14", "next-auth": "^4.24.7", "next-nprogress-bar": "^2.3.13", "nodemailer": "^6.9.14", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8dda89e60..01afbf84f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,6 +20,9 @@ importers: '@blocknote/react': specifier: ^0.12.2 version: 0.12.4(@tiptap/pm@2.4.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) + '@headlessui/react': + specifier: ^2.1.2 + version: 2.1.8(react-dom@18.2.0(react@18.3.1))(react@18.3.1) '@hono/swagger-ui': specifier: ^0.4.0 version: 0.4.0(hono@4.5.8) @@ -31,7 +34,7 @@ importers: version: 3.9.0(react-hook-form@7.52.1(react@18.3.1)) '@next-auth/prisma-adapter': specifier: ^1.0.7 - version: 1.0.7(@prisma/client@5.14.0(prisma@5.14.0))(next-auth@4.24.7(next@14.2.4(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(nodemailer@6.9.14)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)) + version: 1.0.7(@prisma/client@5.14.0(prisma@5.14.0))(next-auth@4.24.7(next@14.2.14(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(nodemailer@6.9.14)(react-dom@18.2.0(react@18.3.1))(react@18.3.1)) '@prisma/client': specifier: ^5.13.0 version: 5.14.0(prisma@5.14.0) @@ -100,10 +103,10 @@ importers: version: 4.2.0(react@18.3.1) '@scalar/nextjs-api-reference': specifier: ^0.4.18 - version: 0.4.18(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(postcss@8.4.40)(react-dom@18.2.0(react@18.3.1))(tailwindcss@3.4.3)(typescript@5.4.5)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1)) + version: 0.4.18(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(postcss@8.4.40)(react-dom@18.2.0(react@18.3.1))(tailwindcss@3.4.3)(typescript@5.5.4)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1)) '@sentry/nextjs': specifier: ^8.19.0 - version: 8.19.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.25.1(@opentelemetry/api@1.9.0))(next@14.2.4(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(react@18.3.1)(webpack@5.92.0) + version: 8.19.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.25.1(@opentelemetry/api@1.9.0))(next@14.2.14(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(react@18.3.1)(webpack@5.92.0) '@simplewebauthn/browser': specifier: ^10.0.0 version: 10.0.0 @@ -118,7 +121,7 @@ importers: version: 4.1.0 '@t3-oss/env-nextjs': specifier: ^0.10.1 - version: 0.10.1(typescript@5.4.5)(zod@3.23.8) + version: 0.10.1(typescript@5.5.4)(zod@3.23.8) '@tanstack/react-query': specifier: ^4.36.1 version: 4.36.1(react-dom@18.2.0(react@18.3.1))(react@18.3.1) @@ -133,7 +136,7 @@ importers: version: 10.45.2(@trpc/server@10.45.2) '@trpc/next': specifier: ^10.45.2 - version: 10.45.2(@tanstack/react-query@4.36.1(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(@trpc/client@10.45.2(@trpc/server@10.45.2))(@trpc/react-query@10.45.2(@tanstack/react-query@4.36.1(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(@trpc/client@10.45.2(@trpc/server@10.45.2))(@trpc/server@10.45.2)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(@trpc/server@10.45.2)(next@14.2.4(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(react-dom@18.2.0(react@18.3.1))(react@18.3.1) + version: 10.45.2(@tanstack/react-query@4.36.1(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(@trpc/client@10.45.2(@trpc/server@10.45.2))(@trpc/react-query@10.45.2(@tanstack/react-query@4.36.1(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(@trpc/client@10.45.2(@trpc/server@10.45.2))(@trpc/server@10.45.2)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(@trpc/server@10.45.2)(next@14.2.14(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(react-dom@18.2.0(react@18.3.1))(react@18.3.1) '@trpc/react-query': specifier: ^10.43.6 version: 10.45.2(@tanstack/react-query@4.36.1(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(@trpc/client@10.45.2(@trpc/server@10.45.2))(@trpc/server@10.45.2)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) @@ -189,11 +192,11 @@ importers: specifier: ^5.0.4 version: 5.0.7 next: - specifier: ^14.2.4 - version: 14.2.4(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) + specifier: ^14.2.14 + version: 14.2.14(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) next-auth: specifier: ^4.24.7 - version: 4.24.7(next@14.2.4(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(nodemailer@6.9.14)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) + version: 4.24.7(next@14.2.14(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(nodemailer@6.9.14)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) next-nprogress-bar: specifier: ^2.3.13 version: 2.3.13 @@ -208,7 +211,7 @@ importers: version: 1.17.1 pg-boss: specifier: ^10.1.1 - version: 10.1.1 + version: 10.1.3 pino: specifier: ^9.3.1 version: 9.3.1 @@ -220,7 +223,7 @@ importers: version: 0.7.4(@prisma/client@5.14.0(prisma@5.14.0)) prisma-json-types-generator: specifier: ^3.0.4 - version: 3.0.4(prisma@5.14.0)(typescript@5.4.5) + version: 3.0.4(prisma@5.14.0)(typescript@5.5.4) pushmodal: specifier: ^1.0.4 version: 1.0.4(@radix-ui/react-dialog@1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(react-dom@18.2.0(react@18.3.1))(react@18.3.1) @@ -335,7 +338,7 @@ importers: version: 9.2.22 knip: specifier: ^5.17.2 - version: 5.17.4(@types/node@20.12.12)(typescript@5.4.5) + version: 5.17.4(@types/node@20.12.12)(typescript@5.5.4) lint-staged: specifier: ^15.2.2 version: 15.2.2 @@ -353,7 +356,7 @@ importers: version: 4.10.4 typescript: specifier: ^5.4.5 - version: 5.4.5 + version: 5.5.4 vitest: specifier: ^1.6.0 version: 1.6.0(@types/node@20.12.12)(terser@5.31.1) @@ -1214,6 +1217,12 @@ packages: react: '>=16.8.0' react-dom: '>=16.8.0' + '@floating-ui/react-dom@2.1.2': + resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + '@floating-ui/react@0.19.2': resolution: {integrity: sha512-JyNk4A0Ezirq8FlXECvRtQOX/iBe5Ize0W/pLkrZjfHW9GUV7Xnq6zm6fyZuQzaHHqEnVizmvlA96e1/CkZv+w==} peerDependencies: @@ -1226,12 +1235,21 @@ packages: react: '>=16.8.0' react-dom: '>=16.8.0' + '@floating-ui/react@0.26.24': + resolution: {integrity: sha512-2ly0pCkZIGEQUq5H8bBK0XJmc1xIK/RM3tvVzY3GBER7IOD1UgmC2Y2tjj4AuS+TC+vTE1KJv2053290jua0Sw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + '@floating-ui/utils@0.2.2': resolution: {integrity: sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==} '@floating-ui/utils@0.2.3': resolution: {integrity: sha512-XGndio0l5/Gvd6CLIABvsav9HHezgDFFhDfHk1bvLfr9ni8dojqLSvBbotJEjmIwNHL7vK4QzBJTdBRoB+c1ww==} + '@floating-ui/utils@0.2.8': + resolution: {integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==} + '@floating-ui/vue@1.0.7': resolution: {integrity: sha512-tm9aMT9IrMzoZfzPpsoZHP7j7ULZ0p9AzCJV6i2H8sAlKe36tAnwuQLHdm7vE0SnRkHJJXuMB/gNz4gFdHLNrg==} @@ -1247,6 +1265,13 @@ packages: react: ^16 || ^17 || ^18 react-dom: ^16 || ^17 || ^18 + '@headlessui/react@2.1.8': + resolution: {integrity: sha512-uajqVkAcVG/wHwG9Fh5PFMcFpf2VxM4vNRNKxRjuK009kePVur8LkuuygHfIE+2uZ7z7GnlTtYsyUe6glPpTLg==} + engines: {node: '>=10'} + peerDependencies: + react: ^18 + react-dom: ^18 + '@headlessui/tailwindcss@0.2.1': resolution: {integrity: sha512-2+5+NZ+RzMyrVeCZOxdbvkUSssSxGvcUxphkIfSVLpRiKsj+/63T2TOL9dBYMXVfj/CGr6hMxSRInzXv6YY7sA==} engines: {node: '>=10'} @@ -1504,11 +1529,17 @@ packages: '@next/bundle-analyzer@14.2.3': resolution: {integrity: sha512-Z88hbbngMs7njZKI8kTJIlpdLKYfMSLwnsqYe54AP4aLmgL70/Ynx/J201DQ+q2Lr6FxFw1uCeLGImDrHOl2ZA==} + '@next/env@14.2.14': + resolution: {integrity: sha512-/0hWQfiaD5//LvGNgc8PjvyqV50vGK0cADYzaoOOGN8fxzBn3iAiaq3S0tCRnFBldq0LVveLcxCTi41ZoYgAgg==} + '@next/env@14.2.3': resolution: {integrity: sha512-W7fd7IbkfmeeY2gXrzJYDx8D2lWKbVoTIj1o1ScPHNzvp30s1AuoEFSdr39bC5sjxJaxTtq3OTCZboNp0lNWHA==} - '@next/env@14.2.4': - resolution: {integrity: sha512-3EtkY5VDkuV2+lNmKlbkibIJxcO4oIHEhBWne6PaAp+76J9KoSsGvNikp6ivzAT8dhhBMYrm6op2pS1ApG0Hzg==} + '@next/swc-darwin-arm64@14.2.14': + resolution: {integrity: sha512-bsxbSAUodM1cjYeA4o6y7sp9wslvwjSkWw57t8DtC8Zig8aG8V6r+Yc05/9mDzLKcybb6EN85k1rJDnMKBd9Gw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] '@next/swc-darwin-arm64@14.2.3': resolution: {integrity: sha512-3pEYo/RaGqPP0YzwnlmPN2puaF2WMLM3apt5jLW2fFdXD9+pqcoTzRk+iZsf8ta7+quAe4Q6Ms0nR0SFGFdS1A==} @@ -1516,10 +1547,10 @@ packages: cpu: [arm64] os: [darwin] - '@next/swc-darwin-arm64@14.2.4': - resolution: {integrity: sha512-AH3mO4JlFUqsYcwFUHb1wAKlebHU/Hv2u2kb1pAuRanDZ7pD/A/KPD98RHZmwsJpdHQwfEc/06mgpSzwrJYnNg==} + '@next/swc-darwin-x64@14.2.14': + resolution: {integrity: sha512-cC9/I+0+SK5L1k9J8CInahduTVWGMXhQoXFeNvF0uNs3Bt1Ub0Azb8JzTU9vNCr0hnaMqiWu/Z0S1hfKc3+dww==} engines: {node: '>= 10'} - cpu: [arm64] + cpu: [x64] os: [darwin] '@next/swc-darwin-x64@14.2.3': @@ -1528,11 +1559,11 @@ packages: cpu: [x64] os: [darwin] - '@next/swc-darwin-x64@14.2.4': - resolution: {integrity: sha512-QVadW73sWIO6E2VroyUjuAxhWLZWEpiFqHdZdoQ/AMpN9YWGuHV8t2rChr0ahy+irKX5mlDU7OY68k3n4tAZTg==} + '@next/swc-linux-arm64-gnu@14.2.14': + resolution: {integrity: sha512-RMLOdA2NU4O7w1PQ3Z9ft3PxD6Htl4uB2TJpocm+4jcllHySPkFaUIFacQ3Jekcg6w+LBaFvjSPthZHiPmiAUg==} engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] + cpu: [arm64] + os: [linux] '@next/swc-linux-arm64-gnu@14.2.3': resolution: {integrity: sha512-cuzCE/1G0ZSnTAHJPUT1rPgQx1w5tzSX7POXSLaS7w2nIUJUD+e25QoXD/hMfxbsT9rslEXugWypJMILBj/QsA==} @@ -1540,8 +1571,8 @@ packages: cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-gnu@14.2.4': - resolution: {integrity: sha512-KT6GUrb3oyCfcfJ+WliXuJnD6pCpZiosx2X3k66HLR+DMoilRb76LpWPGb4tZprawTtcnyrv75ElD6VncVamUQ==} + '@next/swc-linux-arm64-musl@14.2.14': + resolution: {integrity: sha512-WgLOA4hT9EIP7jhlkPnvz49iSOMdZgDJVvbpb8WWzJv5wBD07M2wdJXLkDYIpZmCFfo/wPqFsFR4JS4V9KkQ2A==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -1552,10 +1583,10 @@ packages: cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@14.2.4': - resolution: {integrity: sha512-Alv8/XGSs/ytwQcbCHwze1HmiIkIVhDHYLjczSVrf0Wi2MvKn/blt7+S6FJitj3yTlMwMxII1gIJ9WepI4aZ/A==} + '@next/swc-linux-x64-gnu@14.2.14': + resolution: {integrity: sha512-lbn7svjUps1kmCettV/R9oAvEW+eUI0lo0LJNFOXoQM5NGNxloAyFRNByYeZKL3+1bF5YE0h0irIJfzXBq9Y6w==} engines: {node: '>= 10'} - cpu: [arm64] + cpu: [x64] os: [linux] '@next/swc-linux-x64-gnu@14.2.3': @@ -1564,8 +1595,8 @@ packages: cpu: [x64] os: [linux] - '@next/swc-linux-x64-gnu@14.2.4': - resolution: {integrity: sha512-ze0ShQDBPCqxLImzw4sCdfnB3lRmN3qGMB2GWDRlq5Wqy4G36pxtNOo2usu/Nm9+V2Rh/QQnrRc2l94kYFXO6Q==} + '@next/swc-linux-x64-musl@14.2.14': + resolution: {integrity: sha512-7TcQCvLQ/hKfQRgjxMN4TZ2BRB0P7HwrGAYL+p+m3u3XcKTraUFerVbV3jkNZNwDeQDa8zdxkKkw2els/S5onQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1576,11 +1607,11 @@ packages: cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@14.2.4': - resolution: {integrity: sha512-8dwC0UJoc6fC7PX70csdaznVMNr16hQrTDAMPvLPloazlcaWfdPogq+UpZX6Drqb1OBlwowz8iG7WR0Tzk/diQ==} + '@next/swc-win32-arm64-msvc@14.2.14': + resolution: {integrity: sha512-8i0Ou5XjTLEje0oj0JiI0Xo9L/93ghFtAUYZ24jARSeTMXLUx8yFIdhS55mTExq5Tj4/dC2fJuaT4e3ySvXU1A==} engines: {node: '>= 10'} - cpu: [x64] - os: [linux] + cpu: [arm64] + os: [win32] '@next/swc-win32-arm64-msvc@14.2.3': resolution: {integrity: sha512-AEHIw/dhAMLNFJFJIJIyOFDzrzI5bAjI9J26gbO5xhAKHYTZ9Or04BesFPXiAYXDNdrwTP2dQceYA4dL1geu8A==} @@ -1588,10 +1619,10 @@ packages: cpu: [arm64] os: [win32] - '@next/swc-win32-arm64-msvc@14.2.4': - resolution: {integrity: sha512-jxyg67NbEWkDyvM+O8UDbPAyYRZqGLQDTPwvrBBeOSyVWW/jFQkQKQ70JDqDSYg1ZDdl+E3nkbFbq8xM8E9x8A==} + '@next/swc-win32-ia32-msvc@14.2.14': + resolution: {integrity: sha512-2u2XcSaDEOj+96eXpyjHjtVPLhkAFw2nlaz83EPeuK4obF+HmtDJHqgR1dZB7Gb6V/d55FL26/lYVd0TwMgcOQ==} engines: {node: '>= 10'} - cpu: [arm64] + cpu: [ia32] os: [win32] '@next/swc-win32-ia32-msvc@14.2.3': @@ -1600,10 +1631,10 @@ packages: cpu: [ia32] os: [win32] - '@next/swc-win32-ia32-msvc@14.2.4': - resolution: {integrity: sha512-twrmN753hjXRdcrZmZttb/m5xaCBFa48Dt3FbeEItpJArxriYDunWxJn+QFXdJ3hPkm4u7CKxncVvnmgQMY1ag==} + '@next/swc-win32-x64-msvc@14.2.14': + resolution: {integrity: sha512-MZom+OvZ1NZxuRovKt1ApevjiUJTcU2PmdJKL66xUPaJeRywnbGGRWUlaAOwunD6dX+pm83vj979NTC8QXjGWg==} engines: {node: '>= 10'} - cpu: [ia32] + cpu: [x64] os: [win32] '@next/swc-win32-x64-msvc@14.2.3': @@ -1612,12 +1643,6 @@ packages: cpu: [x64] os: [win32] - '@next/swc-win32-x64-msvc@14.2.4': - resolution: {integrity: sha512-tkLrjBzqFTP8DVrAAQmZelEahfR9OxWpFR++vAI9FBhCiIxtwHwBHC23SBHCTURBtwB4kc/x44imVOnkKGNVGg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -2660,6 +2685,27 @@ packages: '@radix-ui/rect@1.1.0': resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} + '@react-aria/focus@3.18.2': + resolution: {integrity: sha512-Jc/IY+StjA3uqN73o6txKQ527RFU7gnG5crEl5Xy3V+gbYp2O5L3ezAo/E0Ipi2cyMbG6T5Iit1IDs7hcGu8aw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/interactions@3.22.2': + resolution: {integrity: sha512-xE/77fRVSlqHp2sfkrMeNLrqf2amF/RyuAS6T5oDJemRSgYM3UoxTbWjucPhfnoW7r32pFPHHgz4lbdX8xqD/g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/ssr@3.9.5': + resolution: {integrity: sha512-xEwGKoysu+oXulibNUSkXf8itW0npHHTa6c4AyYeZIJyRoegeteYuFpZUBPtIDE8RfHdNsSmE1ssOkxRnwbkuQ==} + engines: {node: '>= 12'} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/utils@3.25.2': + resolution: {integrity: sha512-GdIvG8GBJJZygB4L2QJP1Gabyn2mjFsha73I2wSe+o4DYeGWoJiMZRM06PyTIxLH4S7Sn7eVDtsSBfkc2VY/NA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-email/body@0.0.10': resolution: {integrity: sha512-dMJyL9aU25ieatdPtVjCyQ/WHZYHwNc+Hy/XpF8Cc18gu21cUynVEeYQzFSeigDRMeBQ3PGAyjVDPIob7YlGwA==} peerDependencies: @@ -2823,6 +2869,16 @@ packages: '@react-pdf/types@2.5.0': resolution: {integrity: sha512-XsVRkt0hQ60I4e3leAVt+aZR3KJCaJd179BfJHAv4F4x6Vq3yqkry8lcbUWKGKDw1j3/8sW4FsgGR41SFvsG9A==} + '@react-stately/utils@3.10.3': + resolution: {integrity: sha512-moClv7MlVSHpbYtQIkm0Cx+on8Pgt1XqtPx6fy9rQFb2DNc9u1G3AUVnqA17buOkH1vLxAtX4MedlxMWyRCYYA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-types/shared@3.24.1': + resolution: {integrity: sha512-AUQeGYEm/zDTN6zLzdXolDxz3Jk5dDL7f506F07U8tBwxNNI3WRdhU84G0/AaFikOZzDXhOZDr3MhQMzyE7Ydw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@remirror/core-constants@2.0.2': resolution: {integrity: sha512-dyHY+sMF0ihPus3O27ODd4+agdHMEmuRdyiZJ2CCWjPV5UFmn17ZbElvk6WOGVE4rdCJKZQCrPV2BcikOMLUGQ==} @@ -3463,6 +3519,12 @@ packages: react: '>=16.8' react-dom: '>=16.8' + '@tanstack/react-virtual@3.10.8': + resolution: {integrity: sha512-VbzbVGSsZlQktyLrP5nxE+vE1ZR+U0NFAWPbJLoG2+DKPwd2D7dVICTVIIaYlJqX1ZCEnYDbaOpmMwbsyhBoIA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@tanstack/react-virtual@3.5.1': resolution: {integrity: sha512-jIsuhfgy8GqA67PdWqg73ZB2LFE+HD9hjWL1L6ifEIZVyZVAKpYmgUG4WsKQ005aEyImJmbuimPiEvc57IY0Aw==} peerDependencies: @@ -3473,6 +3535,9 @@ packages: resolution: {integrity: sha512-5Ly5TIRHnWH7vSDell9B/OVyV380qqIJVg7H7R7jU4fPEmOD4smqAX7VRflpYI09srWR8aj5OLD2Ccs1pI5mTg==} engines: {node: '>=12'} + '@tanstack/virtual-core@3.10.8': + resolution: {integrity: sha512-PBu00mtt95jbKFi6Llk9aik8bnR3tR/oQP1o3TSi+iG//+Q2RTIzCEgKkHG8BB86kxMNW6O8wku+Lmi+QFR6jA==} + '@tanstack/virtual-core@3.5.1': resolution: {integrity: sha512-046+AUSiDru/V9pajE1du8WayvBKeCvJ2NmKPy/mR8/SbKKrqmSbj7LJBfXE+nSq4f5TBXvnCzu0kcYebI9WdQ==} @@ -5173,6 +5238,11 @@ packages: glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + glob@10.3.15: + resolution: {integrity: sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw==} + engines: {node: '>=16 || 14 >=14.18'} + hasBin: true + glob@10.3.4: resolution: {integrity: sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ==} engines: {node: '>=16 || 14 >=14.17'} @@ -6163,6 +6233,10 @@ packages: resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} engines: {node: '>=8'} + minipass@7.1.1: + resolution: {integrity: sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==} + engines: {node: '>=16 || 14 >=14.17'} + minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} @@ -6237,8 +6311,8 @@ packages: next-nprogress-bar@2.3.13: resolution: {integrity: sha512-eJQDvPSUwZ2yRyNKqAH6xTFI4RtIFvs+qtY8essTtfooyaxLGmkanEO7vL83U166bullMtVpixD6FQk5SQkhMw==} - next@14.2.3: - resolution: {integrity: sha512-dowFkFTR8v79NPJO4QsBUtxv0g9BrS/phluVpMAt2ku7H+cbcBJlopXjkWlwxrk/xGqMemr7JkGPGemPrLLX7A==} + next@14.2.14: + resolution: {integrity: sha512-Q1coZG17MW0Ly5x76shJ4dkC23woLAhhnDnw+DfTc7EpZSGuWrlsZ3bZaO8t6u1Yu8FVfhkqJE+U8GC7E0GLPQ==} engines: {node: '>=18.17.0'} hasBin: true peerDependencies: @@ -6255,8 +6329,8 @@ packages: sass: optional: true - next@14.2.4: - resolution: {integrity: sha512-R8/V7vugY+822rsQGQCjoLhMuC9oFj9SOi4Cl4b2wjDrseD0LRZ10W7R6Czo4w9ZznVSshKjuIomsRjvm9EKJQ==} + next@14.2.3: + resolution: {integrity: sha512-dowFkFTR8v79NPJO4QsBUtxv0g9BrS/phluVpMAt2ku7H+cbcBJlopXjkWlwxrk/xGqMemr7JkGPGemPrLLX7A==} engines: {node: '>=18.17.0'} hasBin: true peerDependencies: @@ -6487,34 +6561,37 @@ packages: peberminta@0.9.0: resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==} - pg-boss@10.1.1: - resolution: {integrity: sha512-2t7gz5nEUYFabj8czWWFRUSyPDQ5t+K/EF5l9Q5lHn2iwyPPKgIfwK+8LKgRfyHRUePTDQhogsGcwOlNczfZ5Q==} + pg-boss@10.1.3: + resolution: {integrity: sha512-Jb/dxMv3qUezWks8XIn4XGHkapPLpUBRBiUs5nTeaRYYy0vjOlGBPu6V35TnlkfVNpebHYQy4hseAIeRR42rdQ==} engines: {node: '>=20'} pg-cloudflare@1.1.1: resolution: {integrity: sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==} - pg-connection-string@2.6.4: - resolution: {integrity: sha512-v+Z7W/0EO707aNMaAEfiGnGL9sxxumwLl2fJvCQtMn9Fxsg+lPpPkdcyBSv/KFgpGdYkMfn+EI1Or2EHjpgLCA==} + pg-connection-string@2.7.0: + resolution: {integrity: sha512-PI2W9mv53rXJQEOb8xNR8lH7Hr+EKa6oJa38zsK0S/ky2er16ios1wLKhZyxzD7jUReiWokc9WK5nxSnC7W1TA==} pg-int8@1.0.1: resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} engines: {node: '>=4.0.0'} - pg-pool@3.6.2: - resolution: {integrity: sha512-Htjbg8BlwXqSBQ9V8Vjtc+vzf/6fVUuak/3/XXKA9oxZprwW3IMDQTGHP+KDmVL7rtd+R1QjbnCFPuTHm3G4hg==} + pg-pool@3.7.0: + resolution: {integrity: sha512-ZOBQForurqh4zZWjrgSwwAtzJ7QiRX0ovFkZr2klsen3Nm0aoh33Ls0fzfv3imeH/nw/O27cjdz5kzYJfeGp/g==} peerDependencies: pg: '>=8.0' pg-protocol@1.6.1: resolution: {integrity: sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg==} + pg-protocol@1.7.0: + resolution: {integrity: sha512-hTK/mE36i8fDDhgDFjy6xNOG+LCorxLG3WO17tku+ij6sVHXh1jQUJ8hYAnRhNla4QVD2H8er/FOjc/+EgC6yQ==} + pg-types@2.2.0: resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} engines: {node: '>=4'} - pg@8.11.5: - resolution: {integrity: sha512-jqgNHSKL5cbDjFlHyYsCXmQDrfIX/3RsNwYqpd4N0Kt8niLuNoRNH+aazv6cOd43gPh9Y4DjQCtb+X0MH0Hvnw==} + pg@8.13.0: + resolution: {integrity: sha512-34wkUTh3SxTClfoHB3pQ7bIMvw9dpFU1audQQeZG837fmHfHpr14n/AELVDoOYVDW2h5RDWU78tFjkD+erSBsw==} engines: {node: '>= 8.0.0'} peerDependencies: pg-native: '>=3.0.1' @@ -7565,8 +7642,8 @@ packages: resolution: {integrity: sha512-+suCYpfJLAe4OXS6+PPXjW3urOS4IoP9waSiLuXfLgqZODKw/aWwASvzqE886wA0kQgGy0mIWyhd87VpqIy6Xg==} engines: {node: '>=16'} - typescript@5.4.5: - resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} + typescript@5.5.4: + resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} engines: {node: '>=14.17'} hasBin: true @@ -9302,6 +9379,12 @@ snapshots: react: 18.3.1 react-dom: 18.2.0(react@18.3.1) + '@floating-ui/react-dom@2.1.2(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/dom': 1.6.5 + react: 18.3.1 + react-dom: 18.2.0(react@18.3.1) + '@floating-ui/react@0.19.2(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': dependencies: '@floating-ui/react-dom': 1.3.0(react-dom@18.2.0(react@18.3.1))(react@18.3.1) @@ -9318,15 +9401,25 @@ snapshots: react-dom: 18.2.0(react@18.3.1) tabbable: 6.2.0 + '@floating-ui/react@0.26.24(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/react-dom': 2.1.2(react-dom@18.2.0(react@18.3.1))(react@18.3.1) + '@floating-ui/utils': 0.2.8 + react: 18.3.1 + react-dom: 18.2.0(react@18.3.1) + tabbable: 6.2.0 + '@floating-ui/utils@0.2.2': {} '@floating-ui/utils@0.2.3': {} - '@floating-ui/vue@1.0.7(vue@3.4.30(typescript@5.4.5))': + '@floating-ui/utils@0.2.8': {} + + '@floating-ui/vue@1.0.7(vue@3.4.30(typescript@5.5.4))': dependencies: '@floating-ui/dom': 1.6.5 '@floating-ui/utils': 0.2.3 - vue-demi: 0.14.8(vue@3.4.30(typescript@5.4.5)) + vue-demi: 0.14.8(vue@3.4.30(typescript@5.5.4)) transitivePeerDependencies: - '@vue/composition-api' - vue @@ -9346,14 +9439,23 @@ snapshots: react: 18.3.1 react-dom: 18.2.0(react@18.3.1) + '@headlessui/react@2.1.8(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/react': 0.26.24(react-dom@18.2.0(react@18.3.1))(react@18.3.1) + '@react-aria/focus': 3.18.2(react@18.3.1) + '@react-aria/interactions': 3.22.2(react@18.3.1) + '@tanstack/react-virtual': 3.10.8(react-dom@18.2.0(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.2.0(react@18.3.1) + '@headlessui/tailwindcss@0.2.1(tailwindcss@3.4.3)': dependencies: tailwindcss: 3.4.3 - '@headlessui/vue@1.7.22(vue@3.4.30(typescript@5.4.5))': + '@headlessui/vue@1.7.22(vue@3.4.30(typescript@5.5.4))': dependencies: - '@tanstack/vue-virtual': 3.7.0(vue@3.4.30(typescript@5.4.5)) - vue: 3.4.30(typescript@5.4.5) + '@tanstack/vue-virtual': 3.7.0(vue@3.4.30(typescript@5.5.4)) + vue: 3.4.30(typescript@5.5.4) '@hexagon/base64@1.1.28': {} @@ -9589,10 +9691,10 @@ snapshots: - supports-color optional: true - '@next-auth/prisma-adapter@1.0.7(@prisma/client@5.14.0(prisma@5.14.0))(next-auth@4.24.7(next@14.2.4(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(nodemailer@6.9.14)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))': + '@next-auth/prisma-adapter@1.0.7(@prisma/client@5.14.0(prisma@5.14.0))(next-auth@4.24.7(next@14.2.14(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(nodemailer@6.9.14)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))': dependencies: '@prisma/client': 5.14.0(prisma@5.14.0) - next-auth: 4.24.7(next@14.2.4(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(nodemailer@6.9.14)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) + next-auth: 4.24.7(next@14.2.14(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(nodemailer@6.9.14)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) '@next/bundle-analyzer@14.2.3': dependencies: @@ -9601,64 +9703,64 @@ snapshots: - bufferutil - utf-8-validate + '@next/env@14.2.14': {} + '@next/env@14.2.3': {} - '@next/env@14.2.4': {} + '@next/swc-darwin-arm64@14.2.14': + optional: true '@next/swc-darwin-arm64@14.2.3': optional: true - '@next/swc-darwin-arm64@14.2.4': + '@next/swc-darwin-x64@14.2.14': optional: true '@next/swc-darwin-x64@14.2.3': optional: true - '@next/swc-darwin-x64@14.2.4': + '@next/swc-linux-arm64-gnu@14.2.14': optional: true '@next/swc-linux-arm64-gnu@14.2.3': optional: true - '@next/swc-linux-arm64-gnu@14.2.4': + '@next/swc-linux-arm64-musl@14.2.14': optional: true '@next/swc-linux-arm64-musl@14.2.3': optional: true - '@next/swc-linux-arm64-musl@14.2.4': + '@next/swc-linux-x64-gnu@14.2.14': optional: true '@next/swc-linux-x64-gnu@14.2.3': optional: true - '@next/swc-linux-x64-gnu@14.2.4': + '@next/swc-linux-x64-musl@14.2.14': optional: true '@next/swc-linux-x64-musl@14.2.3': optional: true - '@next/swc-linux-x64-musl@14.2.4': + '@next/swc-win32-arm64-msvc@14.2.14': optional: true '@next/swc-win32-arm64-msvc@14.2.3': optional: true - '@next/swc-win32-arm64-msvc@14.2.4': + '@next/swc-win32-ia32-msvc@14.2.14': optional: true '@next/swc-win32-ia32-msvc@14.2.3': optional: true - '@next/swc-win32-ia32-msvc@14.2.4': + '@next/swc-win32-x64-msvc@14.2.14': optional: true '@next/swc-win32-x64-msvc@14.2.3': optional: true - '@next/swc-win32-x64-msvc@14.2.4': - optional: true - '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -10789,6 +10891,37 @@ snapshots: '@radix-ui/rect@1.1.0': {} + '@react-aria/focus@3.18.2(react@18.3.1)': + dependencies: + '@react-aria/interactions': 3.22.2(react@18.3.1) + '@react-aria/utils': 3.25.2(react@18.3.1) + '@react-types/shared': 3.24.1(react@18.3.1) + '@swc/helpers': 0.5.11 + clsx: 2.1.1 + react: 18.3.1 + + '@react-aria/interactions@3.22.2(react@18.3.1)': + dependencies: + '@react-aria/ssr': 3.9.5(react@18.3.1) + '@react-aria/utils': 3.25.2(react@18.3.1) + '@react-types/shared': 3.24.1(react@18.3.1) + '@swc/helpers': 0.5.11 + react: 18.3.1 + + '@react-aria/ssr@3.9.5(react@18.3.1)': + dependencies: + '@swc/helpers': 0.5.11 + react: 18.3.1 + + '@react-aria/utils@3.25.2(react@18.3.1)': + dependencies: + '@react-aria/ssr': 3.9.5(react@18.3.1) + '@react-stately/utils': 3.10.3(react@18.3.1) + '@react-types/shared': 3.24.1(react@18.3.1) + '@swc/helpers': 0.5.11 + clsx: 2.1.1 + react: 18.3.1 + '@react-email/body@0.0.10(react@18.3.1)': dependencies: react: 18.3.1 @@ -11008,6 +11141,15 @@ snapshots: '@react-pdf/types@2.5.0': {} + '@react-stately/utils@3.10.3(react@18.3.1)': + dependencies: + '@swc/helpers': 0.5.11 + react: 18.3.1 + + '@react-types/shared@3.24.1(react@18.3.1)': + dependencies: + react: 18.3.1 + '@remirror/core-constants@2.0.2': {} '@remixicon/react@4.2.0(react@18.3.1)': @@ -11087,14 +11229,14 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.18.0': optional: true - '@scalar/api-client-modal@0.0.16(tailwindcss@3.4.3)(typescript@5.4.5)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1))': + '@scalar/api-client-modal@0.0.16(tailwindcss@3.4.3)(typescript@5.5.4)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1))': dependencies: - '@scalar/client-app': 0.1.14(tailwindcss@3.4.3)(typescript@5.4.5)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1)) - '@scalar/components': 0.12.4(typescript@5.4.5)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1)) + '@scalar/client-app': 0.1.14(tailwindcss@3.4.3)(typescript@5.5.4)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1)) + '@scalar/components': 0.12.4(typescript@5.5.4)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1)) '@scalar/oas-utils': 0.2.5 '@scalar/object-utils': 1.1.2 - vue: 3.4.30(typescript@5.4.5) - vue-router: 4.4.0(vue@3.4.30(typescript@5.4.5)) + vue: 3.4.30(typescript@5.5.4) + vue-router: 4.4.0(vue@3.4.30(typescript@5.5.4)) transitivePeerDependencies: - '@jest/globals' - '@types/bun' @@ -11107,24 +11249,24 @@ snapshots: - typescript - vitest - '@scalar/api-client@1.3.19(typescript@5.4.5)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1))': + '@scalar/api-client@1.3.19(typescript@5.5.4)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1))': dependencies: - '@floating-ui/vue': 1.0.7(vue@3.4.30(typescript@5.4.5)) - '@headlessui/vue': 1.7.22(vue@3.4.30(typescript@5.4.5)) - '@scalar/components': 0.12.4(typescript@5.4.5)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1)) + '@floating-ui/vue': 1.0.7(vue@3.4.30(typescript@5.5.4)) + '@headlessui/vue': 1.7.22(vue@3.4.30(typescript@5.5.4)) + '@scalar/components': 0.12.4(typescript@5.5.4)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1)) '@scalar/oas-utils': 0.2.5 '@scalar/openapi-parser': 0.7.1 - '@scalar/themes': 0.9.8(typescript@5.4.5) - '@scalar/use-codemirror': 0.11.4(typescript@5.4.5) - '@scalar/use-toasts': 0.7.4(typescript@5.4.5) - '@scalar/use-tooltip': 1.0.1(typescript@5.4.5) - '@vueuse/core': 10.11.0(vue@3.4.30(typescript@5.4.5)) + '@scalar/themes': 0.9.8(typescript@5.5.4) + '@scalar/use-codemirror': 0.11.4(typescript@5.5.4) + '@scalar/use-toasts': 0.7.4(typescript@5.5.4) + '@scalar/use-tooltip': 1.0.1(typescript@5.5.4) + '@vueuse/core': 10.11.0(vue@3.4.30(typescript@5.5.4)) axios: 1.7.2 httpsnippet-lite: 3.0.5 nanoid: 5.0.7 pretty-bytes: 6.1.1 pretty-ms: 8.0.0 - vue: 3.4.30(typescript@5.4.5) + vue: 3.4.30(typescript@5.5.4) transitivePeerDependencies: - '@jest/globals' - '@types/bun' @@ -11136,21 +11278,21 @@ snapshots: - typescript - vitest - '@scalar/api-reference@1.24.20(postcss@8.4.40)(tailwindcss@3.4.3)(typescript@5.4.5)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1))': + '@scalar/api-reference@1.24.20(postcss@8.4.40)(tailwindcss@3.4.3)(typescript@5.5.4)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1))': dependencies: - '@headlessui/vue': 1.7.22(vue@3.4.30(typescript@5.4.5)) - '@scalar/api-client': 1.3.19(typescript@5.4.5)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1)) - '@scalar/api-client-modal': 0.0.16(tailwindcss@3.4.3)(typescript@5.4.5)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1)) - '@scalar/components': 0.12.4(typescript@5.4.5)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1)) + '@headlessui/vue': 1.7.22(vue@3.4.30(typescript@5.5.4)) + '@scalar/api-client': 1.3.19(typescript@5.5.4)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1)) + '@scalar/api-client-modal': 0.0.16(tailwindcss@3.4.3)(typescript@5.5.4)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1)) + '@scalar/components': 0.12.4(typescript@5.5.4)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1)) '@scalar/oas-utils': 0.2.5 '@scalar/openapi-parser': 0.7.1 '@scalar/snippetz': 0.1.6 - '@scalar/themes': 0.9.8(typescript@5.4.5) - '@scalar/use-toasts': 0.7.4(typescript@5.4.5) - '@scalar/use-tooltip': 1.0.1(typescript@5.4.5) + '@scalar/themes': 0.9.8(typescript@5.5.4) + '@scalar/use-toasts': 0.7.4(typescript@5.5.4) + '@scalar/use-tooltip': 1.0.1(typescript@5.5.4) '@unhead/schema': 1.9.14 - '@unhead/vue': 1.9.14(vue@3.4.30(typescript@5.4.5)) - '@vueuse/core': 10.11.0(vue@3.4.30(typescript@5.4.5)) + '@unhead/vue': 1.9.14(vue@3.4.30(typescript@5.5.4)) + '@vueuse/core': 10.11.0(vue@3.4.30(typescript@5.5.4)) axios: 1.7.2 fuse.js: 7.0.0 github-slugger: 2.0.0 @@ -11158,7 +11300,7 @@ snapshots: postcss-nested: 6.0.1(postcss@8.4.40) unhead: 1.9.14 unified: 11.0.4 - vue: 3.4.30(typescript@5.4.5) + vue: 3.4.30(typescript@5.5.4) transitivePeerDependencies: - '@jest/globals' - '@types/bun' @@ -11172,26 +11314,26 @@ snapshots: - typescript - vitest - '@scalar/client-app@0.1.14(tailwindcss@3.4.3)(typescript@5.4.5)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1))': + '@scalar/client-app@0.1.14(tailwindcss@3.4.3)(typescript@5.5.4)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1))': dependencies: '@headlessui/tailwindcss': 0.2.1(tailwindcss@3.4.3) - '@headlessui/vue': 1.7.22(vue@3.4.30(typescript@5.4.5)) - '@scalar/components': 0.12.4(typescript@5.4.5)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1)) - '@scalar/draggable': 0.1.3(typescript@5.4.5) + '@headlessui/vue': 1.7.22(vue@3.4.30(typescript@5.5.4)) + '@scalar/components': 0.12.4(typescript@5.5.4)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1)) + '@scalar/draggable': 0.1.3(typescript@5.5.4) '@scalar/oas-utils': 0.2.5 '@scalar/object-utils': 1.1.2 '@scalar/openapi-parser': 0.7.1 - '@scalar/use-toasts': 0.7.4(typescript@5.4.5) - '@scalar/use-tooltip': 1.0.1(typescript@5.4.5) - '@vueuse/core': 10.11.0(vue@3.4.30(typescript@5.4.5)) + '@scalar/use-toasts': 0.7.4(typescript@5.5.4) + '@scalar/use-tooltip': 1.0.1(typescript@5.5.4) + '@vueuse/core': 10.11.0(vue@3.4.30(typescript@5.5.4)) axios: 1.7.2 - cva: 1.0.0-beta.1(typescript@5.4.5) + cva: 1.0.0-beta.1(typescript@5.5.4) js-cookie: 3.0.5 nanoid: 5.0.7 pretty-bytes: 6.1.1 pretty-ms: 8.0.0 - vue: 3.4.30(typescript@5.4.5) - vue-router: 4.4.0(vue@3.4.30(typescript@5.4.5)) + vue: 3.4.30(typescript@5.5.4) + vue-router: 4.4.0(vue@3.4.30(typescript@5.5.4)) zod: 3.23.8 transitivePeerDependencies: - '@jest/globals' @@ -11227,20 +11369,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@scalar/components@0.12.4(typescript@5.4.5)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1))': + '@scalar/components@0.12.4(typescript@5.5.4)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1))': dependencies: '@floating-ui/utils': 0.2.2 - '@floating-ui/vue': 1.0.7(vue@3.4.30(typescript@5.4.5)) - '@headlessui/vue': 1.7.22(vue@3.4.30(typescript@5.4.5)) + '@floating-ui/vue': 1.0.7(vue@3.4.30(typescript@5.5.4)) + '@headlessui/vue': 1.7.22(vue@3.4.30(typescript@5.5.4)) '@scalar/code-highlight': 0.0.5 '@scalar/oas-utils': 0.2.5 '@storybook/test': 8.1.11(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1)) - '@vueuse/core': 10.11.0(vue@3.4.30(typescript@5.4.5)) - cva: 1.0.0-beta.1(typescript@5.4.5) + '@vueuse/core': 10.11.0(vue@3.4.30(typescript@5.5.4)) + cva: 1.0.0-beta.1(typescript@5.5.4) nanoid: 5.0.7 - radix-vue: 1.8.5(vue@3.4.30(typescript@5.4.5)) + radix-vue: 1.8.5(vue@3.4.30(typescript@5.5.4)) tailwind-merge: 2.4.0 - vue: 3.4.30(typescript@5.4.5) + vue: 3.4.30(typescript@5.5.4) transitivePeerDependencies: - '@jest/globals' - '@types/bun' @@ -11252,16 +11394,16 @@ snapshots: - typescript - vitest - '@scalar/draggable@0.1.3(typescript@5.4.5)': + '@scalar/draggable@0.1.3(typescript@5.5.4)': dependencies: - vue: 3.4.30(typescript@5.4.5) + vue: 3.4.30(typescript@5.5.4) transitivePeerDependencies: - typescript - '@scalar/nextjs-api-reference@0.4.18(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(postcss@8.4.40)(react-dom@18.2.0(react@18.3.1))(tailwindcss@3.4.3)(typescript@5.4.5)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1))': + '@scalar/nextjs-api-reference@0.4.18(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(postcss@8.4.40)(react-dom@18.2.0(react@18.3.1))(tailwindcss@3.4.3)(typescript@5.5.4)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1))': dependencies: - '@scalar/api-reference': 1.24.20(postcss@8.4.40)(tailwindcss@3.4.3)(typescript@5.4.5)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1)) - next: 14.2.4(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) + '@scalar/api-reference': 1.24.20(postcss@8.4.40)(tailwindcss@3.4.3)(typescript@5.5.4)(vitest@1.6.0(@types/node@20.12.12)(terser@5.31.1)) + next: 14.2.14(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) react: 18.3.1 transitivePeerDependencies: - '@babel/core' @@ -11337,13 +11479,13 @@ snapshots: '@scalar/snippetz-plugin-node-ofetch': 0.1.1 '@scalar/snippetz-plugin-node-undici': 0.1.6 - '@scalar/themes@0.9.8(typescript@5.4.5)': + '@scalar/themes@0.9.8(typescript@5.5.4)': dependencies: - vue: 3.4.30(typescript@5.4.5) + vue: 3.4.30(typescript@5.5.4) transitivePeerDependencies: - typescript - '@scalar/use-codemirror@0.11.4(typescript@5.4.5)': + '@scalar/use-codemirror@0.11.4(typescript@5.5.4)': dependencies: '@codemirror/autocomplete': 6.16.3(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.2)(@lezer/common@1.2.1) '@codemirror/commands': 6.6.0 @@ -11360,25 +11502,25 @@ snapshots: '@replit/codemirror-css-color-picker': 6.1.1(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.2) '@uiw/codemirror-themes': 4.22.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.28.2) codemirror: 6.0.1(@lezer/common@1.2.1) - vue: 3.4.30(typescript@5.4.5) + vue: 3.4.30(typescript@5.5.4) optionalDependencies: y-codemirror.next: 0.3.5(@codemirror/state@6.4.1)(@codemirror/view@6.28.2)(yjs@13.6.15) yjs: 13.6.15 transitivePeerDependencies: - typescript - '@scalar/use-toasts@0.7.4(typescript@5.4.5)': + '@scalar/use-toasts@0.7.4(typescript@5.5.4)': dependencies: nanoid: 5.0.7 - vue: 3.4.30(typescript@5.4.5) + vue: 3.4.30(typescript@5.5.4) vue-sonner: 1.1.3 transitivePeerDependencies: - typescript - '@scalar/use-tooltip@1.0.1(typescript@5.4.5)': + '@scalar/use-tooltip@1.0.1(typescript@5.5.4)': dependencies: - radix-vue: 1.8.5(vue@3.4.30(typescript@5.4.5)) - vue: 3.4.30(typescript@5.4.5) + radix-vue: 1.8.5(vue@3.4.30(typescript@5.5.4)) + vue: 3.4.30(typescript@5.5.4) transitivePeerDependencies: - '@vue/composition-api' - typescript @@ -11485,7 +11627,7 @@ snapshots: '@sentry/types': 8.19.0 '@sentry/utils': 8.19.0 - '@sentry/nextjs@8.19.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.25.1(@opentelemetry/api@1.9.0))(next@14.2.4(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(react@18.3.1)(webpack@5.92.0)': + '@sentry/nextjs@8.19.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.25.1(@opentelemetry/api@1.9.0))(next@14.2.14(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(react@18.3.1)(webpack@5.92.0)': dependencies: '@opentelemetry/instrumentation-http': 0.52.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.25.1 @@ -11499,7 +11641,7 @@ snapshots: '@sentry/vercel-edge': 8.19.0 '@sentry/webpack-plugin': 2.20.1(webpack@5.92.0) chalk: 3.0.0 - next: 14.2.4(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) + next: 14.2.14(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) resolve: 1.22.8 rollup: 3.29.4 stacktrace-parser: 0.1.10 @@ -12040,18 +12182,18 @@ snapshots: '@swc/counter': 0.1.3 tslib: 2.6.2 - '@t3-oss/env-core@0.10.1(typescript@5.4.5)(zod@3.23.8)': + '@t3-oss/env-core@0.10.1(typescript@5.5.4)(zod@3.23.8)': dependencies: zod: 3.23.8 optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.4 - '@t3-oss/env-nextjs@0.10.1(typescript@5.4.5)(zod@3.23.8)': + '@t3-oss/env-nextjs@0.10.1(typescript@5.5.4)(zod@3.23.8)': dependencies: - '@t3-oss/env-core': 0.10.1(typescript@5.4.5)(zod@3.23.8) + '@t3-oss/env-core': 0.10.1(typescript@5.5.4)(zod@3.23.8) zod: 3.23.8 optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.4 '@tailwindcss/typography@0.5.13(tailwindcss@3.4.3)': dependencies: @@ -12077,6 +12219,12 @@ snapshots: react: 18.3.1 react-dom: 18.2.0(react@18.3.1) + '@tanstack/react-virtual@3.10.8(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': + dependencies: + '@tanstack/virtual-core': 3.10.8 + react: 18.3.1 + react-dom: 18.2.0(react@18.3.1) + '@tanstack/react-virtual@3.5.1(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': dependencies: '@tanstack/virtual-core': 3.5.1 @@ -12085,14 +12233,16 @@ snapshots: '@tanstack/table-core@8.20.1': {} + '@tanstack/virtual-core@3.10.8': {} + '@tanstack/virtual-core@3.5.1': {} '@tanstack/virtual-core@3.7.0': {} - '@tanstack/vue-virtual@3.7.0(vue@3.4.30(typescript@5.4.5))': + '@tanstack/vue-virtual@3.7.0(vue@3.4.30(typescript@5.5.4))': dependencies: '@tanstack/virtual-core': 3.7.0 - vue: 3.4.30(typescript@5.4.5) + vue: 3.4.30(typescript@5.5.4) '@testing-library/dom@10.1.0': dependencies: @@ -12268,13 +12418,13 @@ snapshots: dependencies: '@trpc/server': 10.45.2 - '@trpc/next@10.45.2(@tanstack/react-query@4.36.1(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(@trpc/client@10.45.2(@trpc/server@10.45.2))(@trpc/react-query@10.45.2(@tanstack/react-query@4.36.1(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(@trpc/client@10.45.2(@trpc/server@10.45.2))(@trpc/server@10.45.2)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(@trpc/server@10.45.2)(next@14.2.4(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': + '@trpc/next@10.45.2(@tanstack/react-query@4.36.1(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(@trpc/client@10.45.2(@trpc/server@10.45.2))(@trpc/react-query@10.45.2(@tanstack/react-query@4.36.1(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(@trpc/client@10.45.2(@trpc/server@10.45.2))(@trpc/server@10.45.2)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(@trpc/server@10.45.2)(next@14.2.14(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(react-dom@18.2.0(react@18.3.1))(react@18.3.1)': dependencies: '@tanstack/react-query': 4.36.1(react-dom@18.2.0(react@18.3.1))(react@18.3.1) '@trpc/client': 10.45.2(@trpc/server@10.45.2) '@trpc/react-query': 10.45.2(@tanstack/react-query@4.36.1(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(@trpc/client@10.45.2(@trpc/server@10.45.2))(@trpc/server@10.45.2)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) '@trpc/server': 10.45.2 - next: 14.2.4(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) + next: 14.2.14(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.2.0(react@18.3.1) @@ -12496,13 +12646,13 @@ snapshots: dependencies: '@unhead/schema': 1.9.14 - '@unhead/vue@1.9.14(vue@3.4.30(typescript@5.4.5))': + '@unhead/vue@1.9.14(vue@3.4.30(typescript@5.5.4))': dependencies: '@unhead/schema': 1.9.14 '@unhead/shared': 1.9.14 hookable: 5.5.3 unhead: 1.9.14 - vue: 3.4.30(typescript@5.4.5) + vue: 3.4.30(typescript@5.5.4) '@vitest/expect@1.6.0': dependencies: @@ -12581,29 +12731,29 @@ snapshots: '@vue/shared': 3.4.30 csstype: 3.1.3 - '@vue/server-renderer@3.4.30(vue@3.4.30(typescript@5.4.5))': + '@vue/server-renderer@3.4.30(vue@3.4.30(typescript@5.5.4))': dependencies: '@vue/compiler-ssr': 3.4.30 '@vue/shared': 3.4.30 - vue: 3.4.30(typescript@5.4.5) + vue: 3.4.30(typescript@5.5.4) '@vue/shared@3.4.30': {} - '@vueuse/core@10.11.0(vue@3.4.30(typescript@5.4.5))': + '@vueuse/core@10.11.0(vue@3.4.30(typescript@5.5.4))': dependencies: '@types/web-bluetooth': 0.0.20 '@vueuse/metadata': 10.11.0 - '@vueuse/shared': 10.11.0(vue@3.4.30(typescript@5.4.5)) - vue-demi: 0.14.8(vue@3.4.30(typescript@5.4.5)) + '@vueuse/shared': 10.11.0(vue@3.4.30(typescript@5.5.4)) + vue-demi: 0.14.8(vue@3.4.30(typescript@5.5.4)) transitivePeerDependencies: - '@vue/composition-api' - vue '@vueuse/metadata@10.11.0': {} - '@vueuse/shared@10.11.0(vue@3.4.30(typescript@5.4.5))': + '@vueuse/shared@10.11.0(vue@3.4.30(typescript@5.5.4))': dependencies: - vue-demi: 0.14.8(vue@3.4.30(typescript@5.4.5)) + vue-demi: 0.14.8(vue@3.4.30(typescript@5.5.4)) transitivePeerDependencies: - '@vue/composition-api' - vue @@ -13647,11 +13797,11 @@ snapshots: csstype@3.1.3: {} - cva@1.0.0-beta.1(typescript@5.4.5): + cva@1.0.0-beta.1(typescript@5.5.4): dependencies: clsx: 2.0.0 optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.4 d3-array@3.2.4: dependencies: @@ -14168,6 +14318,14 @@ snapshots: glob-to-regexp@0.4.1: {} + glob@10.3.15: + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.4 + minipass: 7.1.1 + path-scurry: 1.11.1 + glob@10.3.4: dependencies: foreground-child: 3.1.1 @@ -14766,7 +14924,7 @@ snapshots: klona@2.0.6: {} - knip@5.17.4(@types/node@20.12.12)(typescript@5.4.5): + knip@5.17.4(@types/node@20.12.12)(typescript@5.5.4): dependencies: '@ericcornelissen/bash-parser': 0.5.2 '@nodelib/fs.walk': 2.0.0 @@ -14785,7 +14943,7 @@ snapshots: smol-toml: 1.1.4 strip-json-comments: 5.0.1 summary: 2.1.0 - typescript: 5.4.5 + typescript: 5.5.4 zod: 3.23.8 zod-validation-error: 3.3.0(zod@3.23.8) @@ -15616,6 +15774,8 @@ snapshots: minipass@5.0.0: optional: true + minipass@7.1.1: {} + minipass@7.1.2: {} minizlib@2.1.2: @@ -15663,13 +15823,13 @@ snapshots: neo-async@2.6.2: {} - next-auth@4.24.7(next@14.2.4(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(nodemailer@6.9.14)(react-dom@18.2.0(react@18.3.1))(react@18.3.1): + next-auth@4.24.7(next@14.2.14(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1))(nodemailer@6.9.14)(react-dom@18.2.0(react@18.3.1))(react@18.3.1): dependencies: '@babel/runtime': 7.24.5 '@panva/hkdf': 1.1.1 cookie: 0.5.0 jose: 4.15.5 - next: 14.2.4(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) + next: 14.2.14(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1) oauth: 0.9.15 openid-client: 5.6.5 preact: 10.22.0 @@ -15684,9 +15844,9 @@ snapshots: dependencies: nprogress: 0.2.0 - next@14.2.3(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1): + next@14.2.14(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1): dependencies: - '@next/env': 14.2.3 + '@next/env': 14.2.14 '@swc/helpers': 0.5.5 busboy: 1.6.0 caniuse-lite: 1.0.30001620 @@ -15696,23 +15856,23 @@ snapshots: react-dom: 18.2.0(react@18.3.1) styled-jsx: 5.1.1(@babel/core@7.24.5)(react@18.3.1) optionalDependencies: - '@next/swc-darwin-arm64': 14.2.3 - '@next/swc-darwin-x64': 14.2.3 - '@next/swc-linux-arm64-gnu': 14.2.3 - '@next/swc-linux-arm64-musl': 14.2.3 - '@next/swc-linux-x64-gnu': 14.2.3 - '@next/swc-linux-x64-musl': 14.2.3 - '@next/swc-win32-arm64-msvc': 14.2.3 - '@next/swc-win32-ia32-msvc': 14.2.3 - '@next/swc-win32-x64-msvc': 14.2.3 + '@next/swc-darwin-arm64': 14.2.14 + '@next/swc-darwin-x64': 14.2.14 + '@next/swc-linux-arm64-gnu': 14.2.14 + '@next/swc-linux-arm64-musl': 14.2.14 + '@next/swc-linux-x64-gnu': 14.2.14 + '@next/swc-linux-x64-musl': 14.2.14 + '@next/swc-win32-arm64-msvc': 14.2.14 + '@next/swc-win32-ia32-msvc': 14.2.14 + '@next/swc-win32-x64-msvc': 14.2.14 '@opentelemetry/api': 1.9.0 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - next@14.2.4(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1): + next@14.2.3(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@18.2.0(react@18.3.1))(react@18.3.1): dependencies: - '@next/env': 14.2.4 + '@next/env': 14.2.3 '@swc/helpers': 0.5.5 busboy: 1.6.0 caniuse-lite: 1.0.30001620 @@ -15722,15 +15882,15 @@ snapshots: react-dom: 18.2.0(react@18.3.1) styled-jsx: 5.1.1(@babel/core@7.24.5)(react@18.3.1) optionalDependencies: - '@next/swc-darwin-arm64': 14.2.4 - '@next/swc-darwin-x64': 14.2.4 - '@next/swc-linux-arm64-gnu': 14.2.4 - '@next/swc-linux-arm64-musl': 14.2.4 - '@next/swc-linux-x64-gnu': 14.2.4 - '@next/swc-linux-x64-musl': 14.2.4 - '@next/swc-win32-arm64-msvc': 14.2.4 - '@next/swc-win32-ia32-msvc': 14.2.4 - '@next/swc-win32-x64-msvc': 14.2.4 + '@next/swc-darwin-arm64': 14.2.3 + '@next/swc-darwin-x64': 14.2.3 + '@next/swc-linux-arm64-gnu': 14.2.3 + '@next/swc-linux-arm64-musl': 14.2.3 + '@next/swc-linux-x64-gnu': 14.2.3 + '@next/swc-linux-x64-musl': 14.2.3 + '@next/swc-win32-arm64-msvc': 14.2.3 + '@next/swc-win32-ia32-msvc': 14.2.3 + '@next/swc-win32-x64-msvc': 14.2.3 '@opentelemetry/api': 1.9.0 transitivePeerDependencies: - '@babel/core' @@ -15926,10 +16086,10 @@ snapshots: peberminta@0.9.0: {} - pg-boss@10.1.1: + pg-boss@10.1.3: dependencies: cron-parser: 4.9.0 - pg: 8.11.5 + pg: 8.13.0 serialize-error: 8.1.0 transitivePeerDependencies: - pg-native @@ -15937,16 +16097,18 @@ snapshots: pg-cloudflare@1.1.1: optional: true - pg-connection-string@2.6.4: {} + pg-connection-string@2.7.0: {} pg-int8@1.0.1: {} - pg-pool@3.6.2(pg@8.11.5): + pg-pool@3.7.0(pg@8.13.0): dependencies: - pg: 8.11.5 + pg: 8.13.0 pg-protocol@1.6.1: {} + pg-protocol@1.7.0: {} + pg-types@2.2.0: dependencies: pg-int8: 1.0.1 @@ -15955,11 +16117,11 @@ snapshots: postgres-date: 1.0.7 postgres-interval: 1.2.0 - pg@8.11.5: + pg@8.13.0: dependencies: - pg-connection-string: 2.6.4 - pg-pool: 3.6.2(pg@8.11.5) - pg-protocol: 1.6.1 + pg-connection-string: 2.7.0 + pg-pool: 3.7.0(pg@8.13.0) + pg-protocol: 1.7.0 pg-types: 2.2.0 pgpass: 1.0.5 optionalDependencies: @@ -16122,12 +16284,12 @@ snapshots: dependencies: '@prisma/client': 5.14.0(prisma@5.14.0) - prisma-json-types-generator@3.0.4(prisma@5.14.0)(typescript@5.4.5): + prisma-json-types-generator@3.0.4(prisma@5.14.0)(typescript@5.5.4): dependencies: '@prisma/generator-helper': 5.9.1 prisma: 5.14.0 tslib: 2.6.2 - typescript: 5.4.5 + typescript: 5.5.4 prisma@5.14.0: dependencies: @@ -16291,20 +16453,20 @@ snapshots: quick-format-unescaped@4.0.4: {} - radix-vue@1.8.5(vue@3.4.30(typescript@5.4.5)): + radix-vue@1.8.5(vue@3.4.30(typescript@5.5.4)): dependencies: '@floating-ui/dom': 1.6.5 - '@floating-ui/vue': 1.0.7(vue@3.4.30(typescript@5.4.5)) + '@floating-ui/vue': 1.0.7(vue@3.4.30(typescript@5.5.4)) '@internationalized/date': 3.5.4 '@internationalized/number': 3.5.3 - '@tanstack/vue-virtual': 3.7.0(vue@3.4.30(typescript@5.4.5)) - '@vueuse/core': 10.11.0(vue@3.4.30(typescript@5.4.5)) - '@vueuse/shared': 10.11.0(vue@3.4.30(typescript@5.4.5)) + '@tanstack/vue-virtual': 3.7.0(vue@3.4.30(typescript@5.5.4)) + '@vueuse/core': 10.11.0(vue@3.4.30(typescript@5.5.4)) + '@vueuse/shared': 10.11.0(vue@3.4.30(typescript@5.5.4)) aria-hidden: 1.2.4 defu: 6.1.4 fast-deep-equal: 3.1.3 nanoid: 5.0.7 - vue: 3.4.30(typescript@5.4.5) + vue: 3.4.30(typescript@5.5.4) transitivePeerDependencies: - '@vue/composition-api' @@ -17046,7 +17208,7 @@ snapshots: dependencies: '@jridgewell/gen-mapping': 0.3.5 commander: 4.1.1 - glob: 10.4.5 + glob: 10.3.15 lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.6 @@ -17228,7 +17390,7 @@ snapshots: type-fest@4.18.2: {} - typescript@5.4.5: {} + typescript@5.5.4: {} ua-parser-js@1.0.37: {} @@ -17542,26 +17704,26 @@ snapshots: vlq@0.2.3: {} - vue-demi@0.14.8(vue@3.4.30(typescript@5.4.5)): + vue-demi@0.14.8(vue@3.4.30(typescript@5.5.4)): dependencies: - vue: 3.4.30(typescript@5.4.5) + vue: 3.4.30(typescript@5.5.4) - vue-router@4.4.0(vue@3.4.30(typescript@5.4.5)): + vue-router@4.4.0(vue@3.4.30(typescript@5.5.4)): dependencies: '@vue/devtools-api': 6.6.3 - vue: 3.4.30(typescript@5.4.5) + vue: 3.4.30(typescript@5.5.4) vue-sonner@1.1.3: {} - vue@3.4.30(typescript@5.4.5): + vue@3.4.30(typescript@5.5.4): dependencies: '@vue/compiler-dom': 3.4.30 '@vue/compiler-sfc': 3.4.30 '@vue/runtime-dom': 3.4.30 - '@vue/server-renderer': 3.4.30(vue@3.4.30(typescript@5.4.5)) + '@vue/server-renderer': 3.4.30(vue@3.4.30(typescript@5.5.4)) '@vue/shared': 3.4.30 optionalDependencies: - typescript: 5.4.5 + typescript: 5.5.4 w3c-keyname@2.2.8: {} diff --git a/prisma/migrations/20240705065242_update_safe_template_names/migration.sql b/prisma/migrations/20240705065242_update_safe_template_names/migration.sql new file mode 100644 index 000000000..d14d6f3ab --- /dev/null +++ b/prisma/migrations/20240705065242_update_safe_template_names/migration.sql @@ -0,0 +1,14 @@ +/* + Warnings: + + - The values [Valuation Cap, no Discount,Discount, no Valuation Cap,MFN, no Valuation Cap, no Discount,Valuation Cap, no Discount, include Pro Rata Rights,Discount, no Valuation Cap, include Pro Rata Rights,MFN, no Valuation Cap, no Discount, include Pro Rata Rights] on the enum `SafeTemplateEnum` will be removed. If these variants are still used in the database, this will fail. + +*/ +-- AlterEnum +BEGIN; +CREATE TYPE "SafeTemplateEnum_new" AS ENUM ('YC - Valuation Cap, no Discount', 'YC - Discount, no Valuation Cap', 'YC - MFN, no Valuation Cap, no Discount', 'YC - Valuation Cap, Pro Rata, no Discount', 'YC - Discount, Pro Rata, no Valuation Cap', 'YC - MFN, Pro Rata, no Valuation Cap & Discount', 'Custom'); +ALTER TABLE "Safe" ALTER COLUMN "safeTemplate" TYPE "SafeTemplateEnum_new" USING ("safeTemplate"::text::"SafeTemplateEnum_new"); +ALTER TYPE "SafeTemplateEnum" RENAME TO "SafeTemplateEnum_old"; +ALTER TYPE "SafeTemplateEnum_new" RENAME TO "SafeTemplateEnum"; +DROP TYPE "SafeTemplateEnum_old"; +COMMIT; diff --git a/prisma/migrations/20240710064419_missing_migratin/migration.sql b/prisma/migrations/20240710064419_missing_migratin/migration.sql new file mode 100644 index 000000000..84ca642b5 --- /dev/null +++ b/prisma/migrations/20240710064419_missing_migratin/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "Safe" ALTER COLUMN "boardApprovalDate" DROP NOT NULL; diff --git a/prisma/migrations/20240717202810_missing_migration/migration.sql b/prisma/migrations/20240717202810_missing_migration/migration.sql new file mode 100644 index 000000000..9633623dc --- /dev/null +++ b/prisma/migrations/20240717202810_missing_migration/migration.sql @@ -0,0 +1,14 @@ +/* + Warnings: + + - The values [YC - Valuation Cap, no Discount,YC - Discount, no Valuation Cap,YC - MFN, no Valuation Cap, no Discount,YC - Valuation Cap, Pro Rata, no Discount,YC - Discount, Pro Rata, no Valuation Cap,YC - MFN, Pro Rata, no Valuation Cap & Discount] on the enum `SafeTemplateEnum` will be removed. If these variants are still used in the database, this will fail. + +*/ +-- AlterEnum +BEGIN; +CREATE TYPE "SafeTemplateEnum_new" AS ENUM ('YC Post Money - Valuation Cap, no Discount', 'YC Post Money - Discount, no Valuation Cap', 'YC Post Money - MFN, no Valuation Cap, no Discount', 'YC Post Money - Valuation Cap, Pro Rata, no Discount', 'YC Post Money - Discount, Pro Rata, no Valuation Cap', 'YC Post Money - MFN, Pro Rata, no Valuation Cap & Discount', 'YC Pre Money - Valuation Cap, no Discount', 'YC Pre Money - Valuation Cap & Discount', 'YC Pre Money - Discount, no Valuation Cap', 'YC Pre Money - MFN, no Valuation Cap', 'Custom'); +ALTER TABLE "Safe" ALTER COLUMN "safeTemplate" TYPE "SafeTemplateEnum_new" USING ("safeTemplate"::text::"SafeTemplateEnum_new"); +ALTER TYPE "SafeTemplateEnum" RENAME TO "SafeTemplateEnum_old"; +ALTER TYPE "SafeTemplateEnum_new" RENAME TO "SafeTemplateEnum"; +DROP TYPE "SafeTemplateEnum_old"; +COMMIT; diff --git a/prisma/migrations/20240905205102_missing_migration/migration.sql b/prisma/migrations/20240905205102_missing_migration/migration.sql new file mode 100644 index 000000000..948343da5 --- /dev/null +++ b/prisma/migrations/20240905205102_missing_migration/migration.sql @@ -0,0 +1,12 @@ +/* + Warnings: + + - Added the required column `bankAccountId` to the `Safe` table without a default value. This is not possible if the table is not empty. + +*/ +-- AlterTable +ALTER TABLE "Safe" ADD COLUMN "bankAccountId" TEXT NOT NULL, +ALTER COLUMN "publicId" DROP NOT NULL; + +-- CreateIndex +CREATE INDEX "Safe_bankAccountId_idx" ON "Safe"("bankAccountId"); diff --git a/prisma/migrations/20241007174706_add_safe_fiekds/migration.sql b/prisma/migrations/20241007174706_add_safe_fiekds/migration.sql new file mode 100644 index 000000000..078056bf6 --- /dev/null +++ b/prisma/migrations/20241007174706_add_safe_fiekds/migration.sql @@ -0,0 +1,103 @@ +/* + Warnings: + + - You are about to drop the column `stakeholderId` on the `Safe` table. All the data in the column will be lost. + - A unique constraint covering the columns `[signerMemberId]` on the table `Safe` will be added. If there are existing duplicate values, this will fail. + - A unique constraint covering the columns `[signerStakeholderId]` on the table `Safe` will be added. If there are existing duplicate values, this will fail. + - Added the required column `signerMemberId` to the `Safe` table without a default value. This is not possible if the table is not empty. + - Added the required column `signerStakeholderId` to the `Safe` table without a default value. This is not possible if the table is not empty. + - Made the column `publicId` on table `Safe` required. This step will fail if there are existing NULL values in that column. + +*/ +-- CreateEnum +CREATE TYPE "SafeSigningStatus" AS ENUM ('SIGNED', 'PENDING'); + +-- DropIndex +DROP INDEX "Safe_stakeholderId_idx"; + +-- AlterTable +ALTER TABLE "Safe" DROP COLUMN "stakeholderId", +ADD COLUMN "signerMemberId" TEXT NOT NULL, +ADD COLUMN "signerStakeholderId" TEXT NOT NULL, +ALTER COLUMN "publicId" SET NOT NULL; + +-- CreateTable +CREATE TABLE "SafeSignerMember" ( + "id" TEXT NOT NULL, + "status" "SafeSigningStatus" NOT NULL DEFAULT 'PENDING', + "memberId" TEXT NOT NULL, + + CONSTRAINT "SafeSignerMember_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "SafeSignerStakeholder" ( + "id" TEXT NOT NULL, + "status" "SafeSigningStatus" NOT NULL DEFAULT 'PENDING', + "stakeholderId" TEXT NOT NULL, + + CONSTRAINT "SafeSignerStakeholder_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "SafeSigningToken" ( + "id" TEXT NOT NULL, + "token" TEXT NOT NULL, + "signerMemberId" TEXT, + "signerStakeholderId" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "SafeSigningToken_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "DocumentCustomField" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "type" "FieldTypes" NOT NULL DEFAULT 'TEXT', + "defaultValue" TEXT NOT NULL DEFAULT '', + "readOnly" BOOLEAN NOT NULL DEFAULT false, + "required" BOOLEAN NOT NULL DEFAULT false, + "prefilledValue" TEXT, + "meta" JSONB NOT NULL DEFAULT '{}', + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "safeSignerStakeholderId" TEXT, + "safeSignerMemberId" TEXT, + + CONSTRAINT "DocumentCustomField_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE INDEX "SafeSignerMember_memberId_idx" ON "SafeSignerMember"("memberId"); + +-- CreateIndex +CREATE INDEX "SafeSignerStakeholder_stakeholderId_idx" ON "SafeSignerStakeholder"("stakeholderId"); + +-- CreateIndex +CREATE UNIQUE INDEX "SafeSigningToken_token_key" ON "SafeSigningToken"("token"); + +-- CreateIndex +CREATE INDEX "SafeSigningToken_signerStakeholderId_idx" ON "SafeSigningToken"("signerStakeholderId"); + +-- CreateIndex +CREATE INDEX "SafeSigningToken_signerMemberId_idx" ON "SafeSigningToken"("signerMemberId"); + +-- CreateIndex +CREATE INDEX "DocumentCustomField_safeSignerStakeholderId_idx" ON "DocumentCustomField"("safeSignerStakeholderId"); + +-- CreateIndex +CREATE INDEX "DocumentCustomField_safeSignerMemberId_idx" ON "DocumentCustomField"("safeSignerMemberId"); + +-- CreateIndex +CREATE UNIQUE INDEX "Safe_signerMemberId_key" ON "Safe"("signerMemberId"); + +-- CreateIndex +CREATE UNIQUE INDEX "Safe_signerStakeholderId_key" ON "Safe"("signerStakeholderId"); + +-- CreateIndex +CREATE INDEX "Safe_signerMemberId_idx" ON "Safe"("signerMemberId"); + +-- CreateIndex +CREATE INDEX "Safe_signerStakeholderId_idx" ON "Safe"("signerStakeholderId"); diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 7a2c88460..36bdf5fbd 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -189,6 +189,7 @@ model BankAccount { companyId String company Company @relation(fields: [companyId], references: [id], onDelete: Cascade) + safes Safe[] @@unique([companyId, accountNumber]) @@unique([companyId, primary], name: "unique_primary_account") @@ -232,6 +233,7 @@ model Member { updates Update[] dataRooms DataRoomRecipient[] UpdateRecipient UpdateRecipient[] + SafeSignerMember SafeSignerMember[] @@unique([companyId, userId]) @@index([companyId]) @@ -295,13 +297,13 @@ model Stakeholder { investments Investment[] shares Share[] options Option[] - safes Safe[] convertibleNotes ConvertibleNote[] updates UpdateRecipient[] dataRooms DataRoomRecipient[] - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + SafeSignerStakeholder SafeSignerStakeholder[] @@index([companyId]) } @@ -811,20 +813,24 @@ enum SafeStatusEnum { // YC Standard Safe enum SafeTemplateEnum { - POST_MONEY_CAP @map("Valuation Cap, no Discount") - POST_MONEY_DISCOUNT @map("Discount, no Valuation Cap") - POST_MONEY_MFN @map("MFN, no Valuation Cap, no Discount") - - POST_MONEY_CAP_WITH_PRO_RATA @map("Valuation Cap, no Discount, include Pro Rata Rights") - POST_MONEY_DISCOUNT_WITH_PRO_RATA @map("Discount, no Valuation Cap, include Pro Rata Rights") - POST_MONEY_MFN_WITH_PRO_RATA @map("MFN, no Valuation Cap, no Discount, include Pro Rata Rights") + YC_POST_1 @map("YC Post Money - Valuation Cap, no Discount") + YC_POST_2 @map("YC Post Money - Discount, no Valuation Cap") + YC_POST_3 @map("YC Post Money - MFN, no Valuation Cap, no Discount") + YC_POST_4 @map("YC Post Money - Valuation Cap, Pro Rata, no Discount") + YC_POST_5 @map("YC Post Money - Discount, Pro Rata, no Valuation Cap") + YC_POST_6 @map("YC Post Money - MFN, Pro Rata, no Valuation Cap & Discount") + + YC_PRE_1 @map("YC Pre Money - Valuation Cap, no Discount") + YC_PRE_3 @map("YC Pre Money - Valuation Cap & Discount") + YC_PRE_2 @map("YC Pre Money - Discount, no Valuation Cap") + YC_PRE_4 @map("YC Pre Money - MFN, no Valuation Cap") CUSTOM @map("Custom") } model Safe { id String @id @default(cuid()) - publicId String // eg. SAFE-01 + publicId String type SafeTypeEnum @default(POST_MONEY) status SafeStatusEnum @default(DRAFT) capital Float // Amount of money invested @@ -839,22 +845,76 @@ model Safe { documents Document[] - stakeholderId String - stakeholder Stakeholder @relation(fields: [stakeholderId], references: [id], onDelete: Cascade) - companyId String company Company @relation(fields: [companyId], references: [id], onDelete: Cascade) + signerMember SafeSignerMember @relation(fields: [signerMemberId], references: [id]) + signerMemberId String @unique + + signerStakeholder SafeSignerStakeholder @relation(fields: [signerStakeholderId], references: [id]) + signerStakeholderId String @unique + + bankAccountId String + bankAccount BankAccount @relation(fields: [bankAccountId], references: [id], onDelete: Cascade) + issueDate DateTime - boardApprovalDate DateTime - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt + boardApprovalDate DateTime? + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt @@unique([publicId, companyId]) @@index([companyId]) + @@index([bankAccountId]) + @@index([signerMemberId]) + @@index([signerStakeholderId]) +} + +model SafeSignerMember { + id String @id @default(cuid()) + status SafeSigningStatus @default(PENDING) + member Member @relation(fields: [memberId], references: [id]) + memberId String + safe Safe? + fields DocumentCustomField[] + SafeSigningToken SafeSigningToken[] + + @@index([memberId]) +} + +enum SafeSigningStatus { + SIGNED + PENDING +} + +model SafeSignerStakeholder { + id String @id @default(cuid()) + status SafeSigningStatus @default(PENDING) + stakeholder Stakeholder @relation(fields: [stakeholderId], references: [id]) + stakeholderId String + safe Safe? + fields DocumentCustomField[] + SafeSigningToken SafeSigningToken[] + @@index([stakeholderId]) } +model SafeSigningToken { + id String @id @default(cuid()) + token String @unique + + signerMember SafeSignerMember? @relation(fields: [signerMemberId], references: [id]) + signerMemberId String? + + signerStakeholder SafeSignerStakeholder? @relation(fields: [signerStakeholderId], references: [id]) + signerStakeholderId String? + + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + + @@index([signerStakeholderId]) + @@index([signerMemberId]) +} + enum ConvertibleStatusEnum { DRAFT ACTIVE @@ -1143,3 +1203,28 @@ model AccessToken { @@index([userId]) @@index([typeEnum, clientId]) } + +model DocumentCustomField { + id String @id @default(cuid()) + name String + type FieldTypes @default(TEXT) + defaultValue String @default("") + readOnly Boolean @default(false) + required Boolean @default(false) + prefilledValue String? + + /// [TemplateFieldMeta] + meta Json @default("{}") + + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + + safeSignerStakeholder SafeSignerStakeholder? @relation(fields: [safeSignerStakeholderId], references: [id]) + safeSignerStakeholderId String? + + safeSignerMember SafeSignerMember? @relation(fields: [safeSignerMemberId], references: [id]) + safeSignerMemberId String? + + @@index([safeSignerStakeholderId]) + @@index([safeSignerMemberId]) +} diff --git a/public/assets/logo.png b/public/assets/logo.png new file mode 100644 index 000000000..6b6b52a44 Binary files /dev/null and b/public/assets/logo.png differ diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/documents/esign/page.tsx b/src/app/(authenticated)/(dashboard)/[publicId]/documents/esign/page.tsx index 2a423f3a5..5d3022d93 100644 --- a/src/app/(authenticated)/(dashboard)/[publicId]/documents/esign/page.tsx +++ b/src/app/(authenticated)/(dashboard)/[publicId]/documents/esign/page.tsx @@ -24,7 +24,7 @@ const EsignDocumentPage = async () => { subtitle="Click the button below to upload a new document for electronic signature." > @@ -38,7 +38,7 @@ const EsignDocumentPage = async () => { description="Upload, sign and send documents for electronic signatures." action={ diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/equity-plans/form.tsx b/src/app/(authenticated)/(dashboard)/[publicId]/equity-plans/form.tsx index 39ef7394d..75891bcd8 100644 --- a/src/app/(authenticated)/(dashboard)/[publicId]/equity-plans/form.tsx +++ b/src/app/(authenticated)/(dashboard)/[publicId]/equity-plans/form.tsx @@ -1,6 +1,6 @@ "use client"; -import Tldr from "@/components/common/tldr"; +import Message from "@/components/common/message"; import { pushModal } from "@/components/modals"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; @@ -228,8 +228,8 @@ const EquityPlanForm = ({ title: "Create a share class", shareClasses, subtitle: ( - { title="Create an equity plan" shareClasses={shareClasses} subtitle={ - { shareClasses={shareClasses} title="Create an equity plan" subtitle={ - Cancellation behavior Board approval date Plan effective date - + @@ -80,8 +80,8 @@ const EquityPlanTable = ({ equityPlan={plan} shareClasses={shareClasses} subtitle={ - { + return ( + + + + ); +}; + +export default SafePreview; diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/securities/options/page.tsx b/src/app/(authenticated)/(dashboard)/[publicId]/securities/options/page.tsx index 03e7cadcc..d07ce50c5 100644 --- a/src/app/(authenticated)/(dashboard)/[publicId]/securities/options/page.tsx +++ b/src/app/(authenticated)/(dashboard)/[publicId]/securities/options/page.tsx @@ -1,5 +1,5 @@ import EmptyState from "@/components/common/empty-state"; -import Tldr from "@/components/common/tldr"; +import Message from "@/components/common/message"; import OptionTable from "@/components/securities/options/option-table"; import { Card } from "@/components/ui/card"; import { api } from "@/trpc/server"; @@ -50,8 +50,8 @@ const OptionsPage = async () => { buttonDisplayName="Add Options" title="Collect options for Stakeholders" subtitle={ - { const { allow } = await serverAccessControl(); - const data = await allow(api.bankAccounts.getAll.query(), [ + const bankAccounts = await allow(api.bankAccounts.getAll.query(), [ "bank-accounts", "read", ]); - if (!data) { + if (!bankAccounts) { return ; } return ( - {data.bankAccounts.length === 0 ? ( + {bankAccounts.length === 0 ? ( } diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/settings/developer/components/create-access-token.tsx b/src/app/(authenticated)/(dashboard)/[publicId]/settings/developer/components/create-access-token.tsx index e2837997a..7cf3928e6 100644 --- a/src/app/(authenticated)/(dashboard)/[publicId]/settings/developer/components/create-access-token.tsx +++ b/src/app/(authenticated)/(dashboard)/[publicId]/settings/developer/components/create-access-token.tsx @@ -1,7 +1,7 @@ "use client"; +import Message from "@/components/common/message"; import Modal from "@/components/common/modal"; -import Tldr from "@/components/common/tldr"; import { Button } from "@/components/ui/button"; import { Card } from "@/components/ui/card"; import { api } from "@/trpc/react"; @@ -57,9 +57,9 @@ const CreateAccessToken = () => { size="lg" title="Access token created" subtitle={ - } diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/settings/developer/components/table.tsx b/src/app/(authenticated)/(dashboard)/[publicId]/settings/developer/components/table.tsx index efeddc9f4..7e7424b5f 100644 --- a/src/app/(authenticated)/(dashboard)/[publicId]/settings/developer/components/table.tsx +++ b/src/app/(authenticated)/(dashboard)/[publicId]/settings/developer/components/table.tsx @@ -1,7 +1,7 @@ "use client"; import { dayjsExt } from "@/common/dayjs"; -import Tldr from "@/components/common/tldr"; +import Message from "@/components/common/message"; import { Allow } from "@/components/rbac/allow"; import { AlertDialog, @@ -89,9 +89,9 @@ const AccessTokenTable = ({ tokens }: { tokens: AccessTokens }) => { return (
-
diff --git a/src/app/(authenticated)/(dashboard)/[publicId]/share-classes/create-share-class-button.tsx b/src/app/(authenticated)/(dashboard)/[publicId]/share-classes/create-share-class-button.tsx index 0aa333903..cb529521a 100644 --- a/src/app/(authenticated)/(dashboard)/[publicId]/share-classes/create-share-class-button.tsx +++ b/src/app/(authenticated)/(dashboard)/[publicId]/share-classes/create-share-class-button.tsx @@ -1,6 +1,6 @@ "use client"; -import Tldr from "@/components/common/tldr"; +import Message from "@/components/common/message"; import { pushModal } from "@/components/modals"; import { Button } from "@/components/ui/button"; import type { ShareClassMutationType } from "@/trpc/routers/share-class/schema"; @@ -22,8 +22,8 @@ export const CreateShareButton = ({ title: "Create a share class", shareClasses, subtitle: ( - +
+
+
+
+
+ +
+
+
+
+
+ + + + +
+
+ + ); +} diff --git a/src/app/verify-member/[token]/page.tsx b/src/app/verify-member/[token]/page.tsx index 1d464cad6..c68b3c307 100644 --- a/src/app/verify-member/[token]/page.tsx +++ b/src/app/verify-member/[token]/page.tsx @@ -1,7 +1,7 @@ import { VerifyMemberForm } from "@/components/member/verify-member-form"; import { authOptions } from "@/server/auth"; import { checkVerificationToken } from "@/server/member"; -import { type Metadata } from "next"; +import type { Metadata } from "next"; import { getServerSession } from "next-auth"; import { redirect } from "next/navigation"; diff --git a/src/components/common/help-tooltip.tsx b/src/components/common/help-tooltip.tsx new file mode 100644 index 000000000..1736e4b8b --- /dev/null +++ b/src/components/common/help-tooltip.tsx @@ -0,0 +1,31 @@ +import { + Tooltip, + TooltipContent, + TooltipProvider, + TooltipTrigger, +} from "@/components/ui/tooltip"; + +import { cn } from "@/lib/utils"; +import { RiQuestionLine as HelpIcon } from "@remixicon/react"; + +type HelpTooltipProps = { + className?: string; + text: string; +}; + +const HelpTooltip = ({ text, className }: HelpTooltipProps) => { + return ( + + + + + + {text} + + + ); +}; + +export default HelpTooltip; diff --git a/src/components/common/tldr.tsx b/src/components/common/message.tsx similarity index 82% rename from src/components/common/tldr.tsx rename to src/components/common/message.tsx index a9d490e9e..72108d0d1 100644 --- a/src/components/common/tldr.tsx +++ b/src/components/common/message.tsx @@ -1,15 +1,17 @@ import { RiInformationLine } from "@remixicon/react"; import Link from "next/link"; -type TldrProps = { - message: string; +type MessageProps = { + description: string; cta?: { label: string; href: string; }; + + children?: React.ReactNode; }; -const Tldr = ({ message, cta }: TldrProps) => { +const Message = ({ description, cta, children }: MessageProps) => { return (
@@ -21,7 +23,7 @@ const Tldr = ({ message, cta }: TldrProps) => {
-

{message}

+

{description}

{cta && ( @@ -40,10 +42,12 @@ const Tldr = ({ message, cta }: TldrProps) => {
)} + + {children &&
{children}
} ); }; -export default Tldr; +export default Message; diff --git a/src/components/common/modal.tsx b/src/components/common/modal.tsx index b4c39e781..c52d7c872 100644 --- a/src/components/common/modal.tsx +++ b/src/components/common/modal.tsx @@ -22,12 +22,15 @@ const sizes = { "3xl": "max-w-3xl", "4xl": "max-w-4xl", screen: "max-w-[96vw]", + "5xl": "max-w-5xl", }; +export type ModalSizeType = keyof typeof sizes; + export type ModalProps = { title: string | React.ReactNode; subtitle?: string | React.ReactNode; - size?: keyof typeof sizes; + size?: ModalSizeType; trigger?: React.ReactNode; children: React.ReactNode; dialogProps?: DialogProps; diff --git a/src/components/common/push-modal.tsx b/src/components/common/push-modal.tsx index ffdc7ce9a..e25f3ee0d 100644 --- a/src/components/common/push-modal.tsx +++ b/src/components/common/push-modal.tsx @@ -8,12 +8,13 @@ import { } from "@/components/ui/dialog"; import { CaptableLogo } from "@/components/common/logo"; +import type { ModalSizeType } from "@/components/common/modal"; import { cn } from "@/lib/utils"; export type ModalProps = { title: string | React.ReactNode; subtitle?: string | React.ReactNode; - size?: "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "5xl"; + size?: ModalSizeType; children: React.ReactNode; scrollable?: boolean; }; diff --git a/src/components/common/slide-over.tsx b/src/components/common/slide-over.tsx index cab7493d6..441b4b668 100644 --- a/src/components/common/slide-over.tsx +++ b/src/components/common/slide-over.tsx @@ -1,3 +1,5 @@ +"use client"; + import { Sheet, SheetContent, @@ -15,6 +17,17 @@ type SlideOverProps = { children: React.ReactNode; }; +const sizes = { + sm: "max-w-sm sm:max-w-[400px]", + md: "max-w-md sm:max-w-[500px]", + lg: "max-w-lg sm:max-w-[600px]", + xl: "max-w-xl sm:max-w-[700px]", + "2xl": "max-w-2xl sm:max-w-[800px]", + "3xl": "max-w-3xl sm:max-w-[900px]", + "4xl": "max-w-4xl sm:max-w-[1000px]", + "5xl": "max-w-5xl sm:max-w-[1100px]", +}; + const SlideOver = ({ title, subtitle, @@ -22,10 +35,12 @@ const SlideOver = ({ size = "md", children, }: SlideOverProps) => { + const sizeClass = sizes[size]; + return ( {trigger} - + {title} {subtitle} diff --git a/src/components/dashboard/navbar/command-menu.tsx b/src/components/dashboard/navbar/command-menu.tsx index be1a5fad5..314c56b1a 100644 --- a/src/components/dashboard/navbar/command-menu.tsx +++ b/src/components/dashboard/navbar/command-menu.tsx @@ -24,7 +24,7 @@ import { RiSearchLine } from "@remixicon/react"; import { useRouter } from "next/navigation"; import { useEffect, useState } from "react"; -import Tldr from "@/components/common/tldr"; +import Message from "@/components/common/message"; import { pushModal } from "@/components/modals"; type CommandOption = { @@ -50,8 +50,8 @@ const Pages: CommandOption[] = [ pushModal("SingleStakeholdersModal", { title: "Add a stakeholder", subtitle: ( - { pushModal("IssueShareModal", { shouldClientFetch: true, @@ -165,7 +165,7 @@ const Pages: CommandOption[] = [ pushModal("NewSafeModal", { title: "Create a new SAFE agreement", subtitle: - "Create, sign and send a new SAFE agreement to your investors.", + "Create, send and send a new SAFE agreement to your investors.", }); }, icon: RiPieChart2Fill, diff --git a/src/components/modals/equity-pan/equity-plan-form.tsx b/src/components/modals/equity-pan/equity-plan-form.tsx index 9cd00cff7..aad3a47f9 100644 --- a/src/components/modals/equity-pan/equity-plan-form.tsx +++ b/src/components/modals/equity-pan/equity-plan-form.tsx @@ -1,6 +1,6 @@ "use client"; -import Tldr from "@/components/common/tldr"; +import Message from "@/components/common/message"; import { popModal, pushModal } from "@/components/modals"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; @@ -226,8 +226,8 @@ export const EquityPlanForm = ({ title: "Create a share class", shareClasses, subtitle: ( - { +export const InvestorModal = ({ + title, + subtitle, + size = "md", +}: InvestorType) => { return ( - + ); diff --git a/src/components/modals/safe.tsx b/src/components/modals/safe.tsx new file mode 100644 index 000000000..06d85e113 --- /dev/null +++ b/src/components/modals/safe.tsx @@ -0,0 +1,87 @@ +import Message from "@/components/common/message"; +import Modal from "@/components/common/modal"; +import { SafeForm } from "@/components/safe/form"; +import { Button } from "@/components/ui/button"; +import Link from "next/link"; +import { useState } from "react"; + +type SafeModalProps = { + type: "create" | "import"; +}; + +export const SafeModal: React.FC = ({ type }) => { + const [open, setOpen] = useState(true); + + const handleClose = () => setOpen(false); + return ( + + + + {/* TODO: Write a help article on SAFE */} + + + ) : ( + + + + {/* TODO: Write a help article on SAFE */} + + + ) + } + dialogProps={{ + open, + onOpenChange: (val) => { + setOpen(val); + }, + }} + > + + + ); +}; diff --git a/src/components/public-env-script.tsx b/src/components/public-env-script.tsx index c1baa9cab..d38c24984 100644 --- a/src/components/public-env-script.tsx +++ b/src/components/public-env-script.tsx @@ -6,12 +6,13 @@ import Script from "next/script"; export function PublicEnvScript() { noStore(); const publicEnvs = JSON.stringify(getPublicEnv()); + return (