diff --git a/package.json b/package.json index 7afcf7d8..85380568 100644 --- a/package.json +++ b/package.json @@ -9,23 +9,23 @@ "analyze": "ANALYZE=true next build" }, "dependencies": { - "@aws-sdk/client-s3": "3.511.0", - "@aws-sdk/s3-request-presigner": "3.511.0", - "@headlessui/react": "2.0.0-alpha.4", + "@aws-sdk/client-s3": "3.515.0", + "@aws-sdk/s3-request-presigner": "3.515.0", "@next/bundle-analyzer": "14.1.0", + "@radix-ui/react-dropdown-menu": "^2.0.6", "@tailwindcss/forms": "^0.5.7", "@testing-library/jest-dom": "^6.4.2", "@testing-library/react": "^14.2.1", "@types/jest": "^29.5.12", - "@types/node": "^20.11.17", + "@types/node": "^20.11.19", "@types/react": "18.2.55", "@types/react-dom": "18.2.19", "@typescript-eslint/eslint-plugin": "^7.0.1", "@typescript-eslint/parser": "^7.0.1", - "@vercel/analytics": "^1.1.3", + "@vercel/analytics": "^1.2.0", "@vercel/blob": "^0.22.0", "@vercel/postgres": "0.7.2", - "@vercel/speed-insights": "^1.0.9", + "@vercel/speed-insights": "^1.0.10", "autoprefixer": "10.4.17", "camelcase-keys": "^9.1.3", "clsx": "^2.1.0", @@ -37,7 +37,7 @@ "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "nanoid": "^5.0.5", - "next": "14.1.1-canary.56", + "next": "14.1.1-canary.58", "next-auth": "5.0.0-beta.9", "next-themes": "^0.2.1", "postcss": "8.4.35", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9a51e387..142ceea6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,17 +6,17 @@ settings: dependencies: '@aws-sdk/client-s3': - specifier: 3.511.0 - version: 3.511.0 + specifier: 3.515.0 + version: 3.515.0 '@aws-sdk/s3-request-presigner': - specifier: 3.511.0 - version: 3.511.0 - '@headlessui/react': - specifier: 2.0.0-alpha.4 - version: 2.0.0-alpha.4(react-dom@18.2.0)(react@18.2.0) + specifier: 3.515.0 + version: 3.515.0 '@next/bundle-analyzer': specifier: 14.1.0 version: 14.1.0 + '@radix-ui/react-dropdown-menu': + specifier: ^2.0.6 + version: 2.0.6(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) '@tailwindcss/forms': specifier: ^0.5.7 version: 0.5.7(tailwindcss@3.4.1) @@ -30,8 +30,8 @@ dependencies: specifier: ^29.5.12 version: 29.5.12 '@types/node': - specifier: ^20.11.17 - version: 20.11.17 + specifier: ^20.11.19 + version: 20.11.19 '@types/react': specifier: 18.2.55 version: 18.2.55 @@ -45,8 +45,8 @@ dependencies: specifier: ^7.0.1 version: 7.0.1(eslint@8.56.0)(typescript@5.3.3) '@vercel/analytics': - specifier: ^1.1.3 - version: 1.1.3 + specifier: ^1.2.0 + version: 1.2.0(next@14.1.1-canary.58)(react@18.2.0) '@vercel/blob': specifier: ^0.22.0 version: 0.22.0 @@ -54,8 +54,8 @@ dependencies: specifier: 0.7.2 version: 0.7.2 '@vercel/speed-insights': - specifier: ^1.0.9 - version: 1.0.9(next@14.1.1-canary.56)(react@18.2.0) + specifier: ^1.0.10 + version: 1.0.10(next@14.1.1-canary.58)(react@18.2.0) autoprefixer: specifier: 10.4.17 version: 10.4.17(postcss@8.4.35) @@ -82,7 +82,7 @@ dependencies: version: 11.0.5(react-dom@18.2.0)(react@18.2.0) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@20.11.17) + version: 29.7.0(@types/node@20.11.19) jest-environment-jsdom: specifier: ^29.7.0 version: 29.7.0 @@ -90,14 +90,14 @@ dependencies: specifier: ^5.0.5 version: 5.0.5 next: - specifier: 14.1.1-canary.56 - version: 14.1.1-canary.56(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0) + specifier: 14.1.1-canary.58 + version: 14.1.1-canary.58(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0) next-auth: specifier: 5.0.0-beta.9 - version: 5.0.0-beta.9(next@14.1.1-canary.56)(react@18.2.0) + version: 5.0.0-beta.9(next@14.1.1-canary.58)(react@18.2.0) next-themes: specifier: ^0.2.1 - version: 0.2.1(next@14.1.1-canary.56)(react-dom@18.2.0)(react@18.2.0) + version: 0.2.1(next@14.1.1-canary.58)(react-dom@18.2.0)(react@18.2.0) postcss: specifier: 8.4.35 version: 8.4.35 @@ -174,7 +174,7 @@ packages: resolution: {integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==} dependencies: '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.511.0 + '@aws-sdk/types': 3.515.0 tslib: 1.14.1 dev: false @@ -182,7 +182,7 @@ packages: resolution: {integrity: sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w==} dependencies: '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.511.0 + '@aws-sdk/types': 3.515.0 tslib: 1.14.1 dev: false @@ -198,7 +198,7 @@ packages: '@aws-crypto/ie11-detection': 3.0.0 '@aws-crypto/supports-web-crypto': 3.0.0 '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.511.0 + '@aws-sdk/types': 3.515.0 '@aws-sdk/util-locate-window': 3.495.0 '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 @@ -211,7 +211,7 @@ packages: '@aws-crypto/sha256-js': 3.0.0 '@aws-crypto/supports-web-crypto': 3.0.0 '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.511.0 + '@aws-sdk/types': 3.515.0 '@aws-sdk/util-locate-window': 3.495.0 '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 @@ -221,7 +221,7 @@ packages: resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==} dependencies: '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.511.0 + '@aws-sdk/types': 3.515.0 tslib: 1.14.1 dev: false @@ -234,38 +234,38 @@ packages: /@aws-crypto/util@3.0.0: resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} dependencies: - '@aws-sdk/types': 3.511.0 + '@aws-sdk/types': 3.515.0 '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 dev: false - /@aws-sdk/client-s3@3.511.0: - resolution: {integrity: sha512-IRUYev0KNKa5rQrpULE9IhJW6dhgGQWBmAJI+OyITHMu3uGvVHDqWKqnShV0IfMJWg1y37I3juFJ1KAti8jyHw==} + /@aws-sdk/client-s3@3.515.0: + resolution: {integrity: sha512-K527n83hrMUdosxOYTzL63wtlJtmN5SUJZnGY1sUR6UyOrnOr9lS6t3AB6BgHqLFRFZJqSqmhflv2cOD7P1UPg==} engines: {node: '>=14.0.0'} dependencies: '@aws-crypto/sha1-browser': 3.0.0 '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.511.0(@aws-sdk/credential-provider-node@3.511.0) - '@aws-sdk/core': 3.511.0 - '@aws-sdk/credential-provider-node': 3.511.0 - '@aws-sdk/middleware-bucket-endpoint': 3.511.0 - '@aws-sdk/middleware-expect-continue': 3.511.0 - '@aws-sdk/middleware-flexible-checksums': 3.511.0 - '@aws-sdk/middleware-host-header': 3.511.0 - '@aws-sdk/middleware-location-constraint': 3.511.0 - '@aws-sdk/middleware-logger': 3.511.0 - '@aws-sdk/middleware-recursion-detection': 3.511.0 - '@aws-sdk/middleware-sdk-s3': 3.511.0 - '@aws-sdk/middleware-signing': 3.511.0 - '@aws-sdk/middleware-ssec': 3.511.0 - '@aws-sdk/middleware-user-agent': 3.511.0 - '@aws-sdk/region-config-resolver': 3.511.0 - '@aws-sdk/signature-v4-multi-region': 3.511.0 - '@aws-sdk/types': 3.511.0 - '@aws-sdk/util-endpoints': 3.511.0 - '@aws-sdk/util-user-agent-browser': 3.511.0 - '@aws-sdk/util-user-agent-node': 3.511.0 + '@aws-sdk/client-sts': 3.515.0(@aws-sdk/credential-provider-node@3.515.0) + '@aws-sdk/core': 3.513.0 + '@aws-sdk/credential-provider-node': 3.515.0 + '@aws-sdk/middleware-bucket-endpoint': 3.515.0 + '@aws-sdk/middleware-expect-continue': 3.515.0 + '@aws-sdk/middleware-flexible-checksums': 3.515.0 + '@aws-sdk/middleware-host-header': 3.515.0 + '@aws-sdk/middleware-location-constraint': 3.515.0 + '@aws-sdk/middleware-logger': 3.515.0 + '@aws-sdk/middleware-recursion-detection': 3.515.0 + '@aws-sdk/middleware-sdk-s3': 3.515.0 + '@aws-sdk/middleware-signing': 3.515.0 + '@aws-sdk/middleware-ssec': 3.515.0 + '@aws-sdk/middleware-user-agent': 3.515.0 + '@aws-sdk/region-config-resolver': 3.515.0 + '@aws-sdk/signature-v4-multi-region': 3.515.0 + '@aws-sdk/types': 3.515.0 + '@aws-sdk/util-endpoints': 3.515.0 + '@aws-sdk/util-user-agent-browser': 3.515.0 + '@aws-sdk/util-user-agent-node': 3.515.0 '@aws-sdk/xml-builder': 3.496.0 '@smithy/config-resolver': 2.1.1 '@smithy/core': 1.3.2 @@ -305,27 +305,26 @@ packages: - aws-crt dev: false - /@aws-sdk/client-sso-oidc@3.511.0(@aws-sdk/credential-provider-node@3.511.0): - resolution: {integrity: sha512-cITRRq54eTrq7ll9li+yYnLbNHKXG2P+ovdZSDiQ6LjCYBdcD4ela30qbs87Yye9YsopdslDzBhHHtrf5oiuMw==} + /@aws-sdk/client-sso-oidc@3.515.0(@aws-sdk/credential-provider-node@3.515.0): + resolution: {integrity: sha512-zACa8LNlPUdlNUBqQRf5a3MfouLNtcBfm84v2c8M976DwJrMGONPe1QjyLLsD38uESQiXiVQRruj/b000iMXNw==} engines: {node: '>=14.0.0'} peerDependencies: - '@aws-sdk/credential-provider-node': ^3.511.0 + '@aws-sdk/credential-provider-node': ^3.515.0 dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.511.0(@aws-sdk/credential-provider-node@3.511.0) - '@aws-sdk/core': 3.511.0 - '@aws-sdk/credential-provider-node': 3.511.0 - '@aws-sdk/middleware-host-header': 3.511.0 - '@aws-sdk/middleware-logger': 3.511.0 - '@aws-sdk/middleware-recursion-detection': 3.511.0 - '@aws-sdk/middleware-signing': 3.511.0 - '@aws-sdk/middleware-user-agent': 3.511.0 - '@aws-sdk/region-config-resolver': 3.511.0 - '@aws-sdk/types': 3.511.0 - '@aws-sdk/util-endpoints': 3.511.0 - '@aws-sdk/util-user-agent-browser': 3.511.0 - '@aws-sdk/util-user-agent-node': 3.511.0 + '@aws-sdk/client-sts': 3.515.0(@aws-sdk/credential-provider-node@3.515.0) + '@aws-sdk/core': 3.513.0 + '@aws-sdk/credential-provider-node': 3.515.0 + '@aws-sdk/middleware-host-header': 3.515.0 + '@aws-sdk/middleware-logger': 3.515.0 + '@aws-sdk/middleware-recursion-detection': 3.515.0 + '@aws-sdk/middleware-user-agent': 3.515.0 + '@aws-sdk/region-config-resolver': 3.515.0 + '@aws-sdk/types': 3.515.0 + '@aws-sdk/util-endpoints': 3.515.0 + '@aws-sdk/util-user-agent-browser': 3.515.0 + '@aws-sdk/util-user-agent-node': 3.515.0 '@smithy/config-resolver': 2.1.1 '@smithy/core': 1.3.2 '@smithy/fetch-http-handler': 2.4.1 @@ -348,6 +347,7 @@ packages: '@smithy/util-defaults-mode-browser': 2.1.1 '@smithy/util-defaults-mode-node': 2.2.0 '@smithy/util-endpoints': 1.1.1 + '@smithy/util-middleware': 2.1.1 '@smithy/util-retry': 2.1.1 '@smithy/util-utf8': 2.1.1 tslib: 2.6.2 @@ -355,22 +355,22 @@ packages: - aws-crt dev: false - /@aws-sdk/client-sso@3.511.0: - resolution: {integrity: sha512-v1f5ZbuZWpad+fgTOpgFyIZT3A37wdqoSPh0hl+cKRu5kPsz96xCe9+UvLx+HdN2yJ/mV0UZcMq6ysj4xAGIEg==} + /@aws-sdk/client-sso@3.515.0: + resolution: {integrity: sha512-4oGBLW476zmkdN98lAns3bObRNO+DLOfg4MDUSR6l6GYBV/zGAtoy2O/FhwYKgA2L5h2ZtElGopLlk/1Q0ePLw==} engines: {node: '>=14.0.0'} dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/core': 3.511.0 - '@aws-sdk/middleware-host-header': 3.511.0 - '@aws-sdk/middleware-logger': 3.511.0 - '@aws-sdk/middleware-recursion-detection': 3.511.0 - '@aws-sdk/middleware-user-agent': 3.511.0 - '@aws-sdk/region-config-resolver': 3.511.0 - '@aws-sdk/types': 3.511.0 - '@aws-sdk/util-endpoints': 3.511.0 - '@aws-sdk/util-user-agent-browser': 3.511.0 - '@aws-sdk/util-user-agent-node': 3.511.0 + '@aws-sdk/core': 3.513.0 + '@aws-sdk/middleware-host-header': 3.515.0 + '@aws-sdk/middleware-logger': 3.515.0 + '@aws-sdk/middleware-recursion-detection': 3.515.0 + '@aws-sdk/middleware-user-agent': 3.515.0 + '@aws-sdk/region-config-resolver': 3.515.0 + '@aws-sdk/types': 3.515.0 + '@aws-sdk/util-endpoints': 3.515.0 + '@aws-sdk/util-user-agent-browser': 3.515.0 + '@aws-sdk/util-user-agent-node': 3.515.0 '@smithy/config-resolver': 2.1.1 '@smithy/core': 1.3.2 '@smithy/fetch-http-handler': 2.4.1 @@ -393,6 +393,7 @@ packages: '@smithy/util-defaults-mode-browser': 2.1.1 '@smithy/util-defaults-mode-node': 2.2.0 '@smithy/util-endpoints': 1.1.1 + '@smithy/util-middleware': 2.1.1 '@smithy/util-retry': 2.1.1 '@smithy/util-utf8': 2.1.1 tslib: 2.6.2 @@ -400,25 +401,25 @@ packages: - aws-crt dev: false - /@aws-sdk/client-sts@3.511.0(@aws-sdk/credential-provider-node@3.511.0): - resolution: {integrity: sha512-lwVEEXK+1auEwmBuTv35m2GvbxPthi8SjNUpU4pRetZPVbGhnhCN6H7JqeMDP6GLf81Io2eySXRsmLMt7l/fjg==} + /@aws-sdk/client-sts@3.515.0(@aws-sdk/credential-provider-node@3.515.0): + resolution: {integrity: sha512-ScYuvaIDgip3atOJIA1FU2n0gJkEdveu1KrrCPathoUCV5zpK8qQmO/n+Fj/7hKFxeKdFbB+4W4CsJWYH94nlg==} engines: {node: '>=14.0.0'} peerDependencies: - '@aws-sdk/credential-provider-node': ^3.511.0 + '@aws-sdk/credential-provider-node': ^3.515.0 dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/core': 3.511.0 - '@aws-sdk/credential-provider-node': 3.511.0 - '@aws-sdk/middleware-host-header': 3.511.0 - '@aws-sdk/middleware-logger': 3.511.0 - '@aws-sdk/middleware-recursion-detection': 3.511.0 - '@aws-sdk/middleware-user-agent': 3.511.0 - '@aws-sdk/region-config-resolver': 3.511.0 - '@aws-sdk/types': 3.511.0 - '@aws-sdk/util-endpoints': 3.511.0 - '@aws-sdk/util-user-agent-browser': 3.511.0 - '@aws-sdk/util-user-agent-node': 3.511.0 + '@aws-sdk/core': 3.513.0 + '@aws-sdk/credential-provider-node': 3.515.0 + '@aws-sdk/middleware-host-header': 3.515.0 + '@aws-sdk/middleware-logger': 3.515.0 + '@aws-sdk/middleware-recursion-detection': 3.515.0 + '@aws-sdk/middleware-user-agent': 3.515.0 + '@aws-sdk/region-config-resolver': 3.515.0 + '@aws-sdk/types': 3.515.0 + '@aws-sdk/util-endpoints': 3.515.0 + '@aws-sdk/util-user-agent-browser': 3.515.0 + '@aws-sdk/util-user-agent-node': 3.515.0 '@smithy/config-resolver': 2.1.1 '@smithy/core': 1.3.2 '@smithy/fetch-http-handler': 2.4.1 @@ -450,8 +451,8 @@ packages: - aws-crt dev: false - /@aws-sdk/core@3.511.0: - resolution: {integrity: sha512-0gbDvQhToyLxPyr/7KP6uavrBYKh7exld2lju1Lp65U61XgEjTVP/thJmHTvH4BAKGSqeIz/rrwJ0KrC8nwBtw==} + /@aws-sdk/core@3.513.0: + resolution: {integrity: sha512-L+9DL4apWuqNKVOMJ8siAuWoRM9rZf9w1iPv8S2o83WO2jVK7E/m+rNW1dFo9HsA5V1ccDl2H2qLXx24HiHmOw==} engines: {node: '>=14.0.0'} dependencies: '@smithy/core': 1.3.2 @@ -462,21 +463,21 @@ packages: tslib: 2.6.2 dev: false - /@aws-sdk/credential-provider-env@3.511.0: - resolution: {integrity: sha512-4VUsnLRox8YzxnZwnFrfZM4bL5KKLhsjjjX7oiuLyzFkhauI4HFYt7rTB8YNGphpqAg/Wzw5DBZfO3Bw1iR1HA==} + /@aws-sdk/credential-provider-env@3.515.0: + resolution: {integrity: sha512-45vxdyqhTAaUMERYVWOziG3K8L2TV9G4ryQS/KZ84o7NAybE9GMdoZRVmGHAO7mJJ1wQiYCM/E+i5b3NW9JfNA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.511.0 + '@aws-sdk/types': 3.515.0 '@smithy/property-provider': 2.1.1 '@smithy/types': 2.9.1 tslib: 2.6.2 dev: false - /@aws-sdk/credential-provider-http@3.511.0: - resolution: {integrity: sha512-y83Gt8GPpgMe/lMFxIq+0G2rbzLTC6lhrDocHUzqcApLD6wet8Esy2iYckSRlJgYY+qsVAzpLrSMtt85DwRPTw==} + /@aws-sdk/credential-provider-http@3.515.0: + resolution: {integrity: sha512-Ba6FXK77vU4WyheiamNjEuTFmir0eAXuJGPO27lBaA8g+V/seXGHScsbOG14aQGDOr2P02OPwKGZrWWA7BFpfQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.511.0 + '@aws-sdk/types': 3.515.0 '@smithy/fetch-http-handler': 2.4.1 '@smithy/node-http-handler': 2.3.1 '@smithy/property-provider': 2.1.1 @@ -487,16 +488,16 @@ packages: tslib: 2.6.2 dev: false - /@aws-sdk/credential-provider-ini@3.511.0(@aws-sdk/credential-provider-node@3.511.0): - resolution: {integrity: sha512-AgIOCtYzm61jbTQCY/2Vf/yu7DeLG0TLZa05a3VVRN9XE4ERtEnMn7TdbxM+hS24MTX8xI0HbMcWxCBkXRIg9w==} + /@aws-sdk/credential-provider-ini@3.515.0(@aws-sdk/credential-provider-node@3.515.0): + resolution: {integrity: sha512-ouDlNZdv2TKeVEA/YZk2+XklTXyAAGdbWnl4IgN9ItaodWI+lZjdIoNC8BAooVH+atIV/cZgoGTGQL7j2TxJ9A==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/client-sts': 3.511.0(@aws-sdk/credential-provider-node@3.511.0) - '@aws-sdk/credential-provider-env': 3.511.0 - '@aws-sdk/credential-provider-process': 3.511.0 - '@aws-sdk/credential-provider-sso': 3.511.0(@aws-sdk/credential-provider-node@3.511.0) - '@aws-sdk/credential-provider-web-identity': 3.511.0(@aws-sdk/credential-provider-node@3.511.0) - '@aws-sdk/types': 3.511.0 + '@aws-sdk/client-sts': 3.515.0(@aws-sdk/credential-provider-node@3.515.0) + '@aws-sdk/credential-provider-env': 3.515.0 + '@aws-sdk/credential-provider-process': 3.515.0 + '@aws-sdk/credential-provider-sso': 3.515.0(@aws-sdk/credential-provider-node@3.515.0) + '@aws-sdk/credential-provider-web-identity': 3.515.0(@aws-sdk/credential-provider-node@3.515.0) + '@aws-sdk/types': 3.515.0 '@smithy/credential-provider-imds': 2.2.1 '@smithy/property-provider': 2.1.1 '@smithy/shared-ini-file-loader': 2.3.1 @@ -507,17 +508,17 @@ packages: - aws-crt dev: false - /@aws-sdk/credential-provider-node@3.511.0: - resolution: {integrity: sha512-5JDZXsSluliJmxOF+lYYFgJdSKQfVLQyic5NxScHULTERGoEwEHMgucFGwJ9MV9FoINjNTQLfAiWlJL/kGkCEQ==} + /@aws-sdk/credential-provider-node@3.515.0: + resolution: {integrity: sha512-Y4kHSpbxksiCZZNcvsiKUd8Fb2XlyUuONEwqWFNL82ZH6TCCjBGS31wJQCSxBHqYcOL3tiORUEJkoO7uS30uQA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/credential-provider-env': 3.511.0 - '@aws-sdk/credential-provider-http': 3.511.0 - '@aws-sdk/credential-provider-ini': 3.511.0(@aws-sdk/credential-provider-node@3.511.0) - '@aws-sdk/credential-provider-process': 3.511.0 - '@aws-sdk/credential-provider-sso': 3.511.0(@aws-sdk/credential-provider-node@3.511.0) - '@aws-sdk/credential-provider-web-identity': 3.511.0(@aws-sdk/credential-provider-node@3.511.0) - '@aws-sdk/types': 3.511.0 + '@aws-sdk/credential-provider-env': 3.515.0 + '@aws-sdk/credential-provider-http': 3.515.0 + '@aws-sdk/credential-provider-ini': 3.515.0(@aws-sdk/credential-provider-node@3.515.0) + '@aws-sdk/credential-provider-process': 3.515.0 + '@aws-sdk/credential-provider-sso': 3.515.0(@aws-sdk/credential-provider-node@3.515.0) + '@aws-sdk/credential-provider-web-identity': 3.515.0(@aws-sdk/credential-provider-node@3.515.0) + '@aws-sdk/types': 3.515.0 '@smithy/credential-provider-imds': 2.2.1 '@smithy/property-provider': 2.1.1 '@smithy/shared-ini-file-loader': 2.3.1 @@ -527,24 +528,24 @@ packages: - aws-crt dev: false - /@aws-sdk/credential-provider-process@3.511.0: - resolution: {integrity: sha512-88hLUPqcTwjSubPS+34ZfmglnKeLny8GbmZsyllk96l26PmDTAqo5RScSA8BWxL0l5pRRWGtcrFyts+oibHIuQ==} + /@aws-sdk/credential-provider-process@3.515.0: + resolution: {integrity: sha512-pSjiOA2FM63LHRKNDvEpBRp80FVGT0Mw/gzgbqFXP+sewk0WVonYbEcMDTJptH3VsLPGzqH/DQ1YL/aEIBuXFQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.511.0 + '@aws-sdk/types': 3.515.0 '@smithy/property-provider': 2.1.1 '@smithy/shared-ini-file-loader': 2.3.1 '@smithy/types': 2.9.1 tslib: 2.6.2 dev: false - /@aws-sdk/credential-provider-sso@3.511.0(@aws-sdk/credential-provider-node@3.511.0): - resolution: {integrity: sha512-aEei9UdXYEE2e0Htf28/IcuHcWk3VkUkpcg3KDR/AyzXA3i/kxmixtAgRmHOForC5CMqoJjzVPFUITNkAscyag==} + /@aws-sdk/credential-provider-sso@3.515.0(@aws-sdk/credential-provider-node@3.515.0): + resolution: {integrity: sha512-j7vUkiSmuhpBvZYoPTRTI4ePnQbiZMFl6TNhg9b9DprC1zHkucsZnhRhqjOVlrw/H6J4jmcPGcHHTZ5WQNI5xQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/client-sso': 3.511.0 - '@aws-sdk/token-providers': 3.511.0(@aws-sdk/credential-provider-node@3.511.0) - '@aws-sdk/types': 3.511.0 + '@aws-sdk/client-sso': 3.515.0 + '@aws-sdk/token-providers': 3.515.0(@aws-sdk/credential-provider-node@3.515.0) + '@aws-sdk/types': 3.515.0 '@smithy/property-provider': 2.1.1 '@smithy/shared-ini-file-loader': 2.3.1 '@smithy/types': 2.9.1 @@ -554,12 +555,12 @@ packages: - aws-crt dev: false - /@aws-sdk/credential-provider-web-identity@3.511.0(@aws-sdk/credential-provider-node@3.511.0): - resolution: {integrity: sha512-/3XMyN7YYefAsES/sMMY5zZGRmZ5QJisJw798DdMYmYMsb1dt0Qy8kZTu+59ZzOiVIcznsjSTCEB81QmGtDKcA==} + /@aws-sdk/credential-provider-web-identity@3.515.0(@aws-sdk/credential-provider-node@3.515.0): + resolution: {integrity: sha512-66+2g4z3fWwdoGReY8aUHvm6JrKZMTRxjuizljVmMyOBttKPeBYXvUTop/g3ZGUx1f8j+C5qsGK52viYBvtjuQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/client-sts': 3.511.0(@aws-sdk/credential-provider-node@3.511.0) - '@aws-sdk/types': 3.511.0 + '@aws-sdk/client-sts': 3.515.0(@aws-sdk/credential-provider-node@3.515.0) + '@aws-sdk/types': 3.515.0 '@smithy/property-provider': 2.1.1 '@smithy/types': 2.9.1 tslib: 2.6.2 @@ -568,11 +569,11 @@ packages: - aws-crt dev: false - /@aws-sdk/middleware-bucket-endpoint@3.511.0: - resolution: {integrity: sha512-G4dAAHPUZbpDCVBaCcAOlFoctO9lcecSs0EZYrvzQc/9d4XJvNWGd1C7GSdf204VPOCPZCjNpTkdWGm25r00wA==} + /@aws-sdk/middleware-bucket-endpoint@3.515.0: + resolution: {integrity: sha512-Vm423j3udFrhKPaKiXtie+6aF05efjX8lhAu5VOruIvbam7olvdWNdkH7sGWlz1ko3CVa7PwOYjGHiOOhxpEOA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.511.0 + '@aws-sdk/types': 3.515.0 '@aws-sdk/util-arn-parser': 3.495.0 '@smithy/node-config-provider': 2.2.1 '@smithy/protocol-http': 3.1.1 @@ -581,23 +582,23 @@ packages: tslib: 2.6.2 dev: false - /@aws-sdk/middleware-expect-continue@3.511.0: - resolution: {integrity: sha512-zjDzrJV9PFCkEqhNLKKK+9PB1vPveVZLJbcY71V3PZFvPII1bhlgwvI1e99MhEiaiH2a9I2PnS56bGwEKuNTrw==} + /@aws-sdk/middleware-expect-continue@3.515.0: + resolution: {integrity: sha512-TWCXulivab4reOMx/vxa/IwnPX78fLwI9NUoAxjsqB6W9qjmSnPD43BSVeGvbbl/YNmgk7XfMbZb6IgxW7RyzA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.511.0 + '@aws-sdk/types': 3.515.0 '@smithy/protocol-http': 3.1.1 '@smithy/types': 2.9.1 tslib: 2.6.2 dev: false - /@aws-sdk/middleware-flexible-checksums@3.511.0: - resolution: {integrity: sha512-oI8zULi6VXLXJ3zA6aCdbOoceSNOxGITosB7EKDsLllzAQFV1WlzmQCtjFY8DLLYZ521atgJNcVbzjxPQnrnJA==} + /@aws-sdk/middleware-flexible-checksums@3.515.0: + resolution: {integrity: sha512-ydGjnqNeYlJaAkmQeQnS4pZRAAvzefdm8c234Qh0Fg55xRwHTNLp7uYsdfkTjrdAlj6YIO3Zr6vK6VJ6MGCwug==} engines: {node: '>=14.0.0'} dependencies: '@aws-crypto/crc32': 3.0.0 '@aws-crypto/crc32c': 3.0.0 - '@aws-sdk/types': 3.511.0 + '@aws-sdk/types': 3.515.0 '@smithy/is-array-buffer': 2.1.1 '@smithy/protocol-http': 3.1.1 '@smithy/types': 2.9.1 @@ -605,49 +606,49 @@ packages: tslib: 2.6.2 dev: false - /@aws-sdk/middleware-host-header@3.511.0: - resolution: {integrity: sha512-DbBzQP/6woSHR/+g9dHN3YiYaLIqFw9u8lQFMxi3rT3hqITFVYLzzXtEaHjDD6/is56pNT84CIKbyJ6/gY5d1Q==} + /@aws-sdk/middleware-host-header@3.515.0: + resolution: {integrity: sha512-I1MwWPzdRKM1luvdDdjdGsDjNVPhj9zaIytEchjTY40NcKOg+p2evLD2y69ozzg8pyXK63r8DdvDGOo9QPuh0A==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.511.0 + '@aws-sdk/types': 3.515.0 '@smithy/protocol-http': 3.1.1 '@smithy/types': 2.9.1 tslib: 2.6.2 dev: false - /@aws-sdk/middleware-location-constraint@3.511.0: - resolution: {integrity: sha512-PKHnOT3oBo41NELq3Esz3K9JuV1l9E+SrCcfr/07yU4EbqhS4UGPb22Yf5JakQu4fGbTFlAftcc8PXcE2zLr4g==} + /@aws-sdk/middleware-location-constraint@3.515.0: + resolution: {integrity: sha512-ORFC5oijjTJsHhUXy9o52/vl5Irf6e83bE/8tBp+sVVx81+E8zTTWZbysoa41c0B5Ycd0H3wCWutvjdXT16ydQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.511.0 + '@aws-sdk/types': 3.515.0 '@smithy/types': 2.9.1 tslib: 2.6.2 dev: false - /@aws-sdk/middleware-logger@3.511.0: - resolution: {integrity: sha512-EYU9dBlJXvQcCsM2Tfgi0NQoXrqovfDv/fDy8oGJgZFrgNuHDti8tdVVxeJTUJNEAF67xlDl5o+rWEkKthkYGQ==} + /@aws-sdk/middleware-logger@3.515.0: + resolution: {integrity: sha512-qXomJzg2m/5seQOxHi/yOXOKfSjwrrJSmEmfwJKJyQgdMbBcjz3Cz0H/1LyC6c5hHm6a/SZgSTzDAbAoUmyL+Q==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.511.0 + '@aws-sdk/types': 3.515.0 '@smithy/types': 2.9.1 tslib: 2.6.2 dev: false - /@aws-sdk/middleware-recursion-detection@3.511.0: - resolution: {integrity: sha512-PlNPCV/6zpDVdNx1K69xDTh/wPNU4WyP4qa6hUo2/+4/PNG5HI9xbCWtpb4RjhdTRw6qDtkBNcPICHbtWx5aHg==} + /@aws-sdk/middleware-recursion-detection@3.515.0: + resolution: {integrity: sha512-dokHLbTV3IHRIBrw9mGoxcNTnQsjlm7TpkJhPdGT9T4Mq399EyQo51u6IsVMm07RXLl2Zw7u+u9p+qWBFzmFRA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.511.0 + '@aws-sdk/types': 3.515.0 '@smithy/protocol-http': 3.1.1 '@smithy/types': 2.9.1 tslib: 2.6.2 dev: false - /@aws-sdk/middleware-sdk-s3@3.511.0: - resolution: {integrity: sha512-SKJr8mKaqjcGpu0xxRPXZiKrJmyetDfgzvWuZ7QOgdnPa+6jk5fmEUTFoPb3VCarMkf8xo/l6cTZ5lei7Lbflw==} + /@aws-sdk/middleware-sdk-s3@3.515.0: + resolution: {integrity: sha512-vB8JwiTEAqm1UT9xfugnCgl0H0dtBLUQQK99JwQEWjHPZmQ3HQuVkykmJRY3X0hzKMEgqXodz0hZOvf3Hq1mvQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.511.0 + '@aws-sdk/types': 3.515.0 '@aws-sdk/util-arn-parser': 3.495.0 '@smithy/node-config-provider': 2.2.1 '@smithy/protocol-http': 3.1.1 @@ -658,11 +659,11 @@ packages: tslib: 2.6.2 dev: false - /@aws-sdk/middleware-signing@3.511.0: - resolution: {integrity: sha512-IMijFLfm+QQHD6NNDX9k3op9dpBSlWKnqjcMU38Tytl2nbqV4gktkarOK1exHAmH7CdoYR5BufVtBzbASNSF/A==} + /@aws-sdk/middleware-signing@3.515.0: + resolution: {integrity: sha512-SdjCyQCL702I07KhCiBFcoh6+NYtnruHJQIzWwMpBteuYHnCHW1k9uZ6pqacsS+Y6qpAKfTVNpQx2zP2s6QoHA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.511.0 + '@aws-sdk/types': 3.515.0 '@smithy/property-provider': 2.1.1 '@smithy/protocol-http': 3.1.1 '@smithy/signature-v4': 2.1.1 @@ -671,31 +672,31 @@ packages: tslib: 2.6.2 dev: false - /@aws-sdk/middleware-ssec@3.511.0: - resolution: {integrity: sha512-8pfgBard9pj7oWJ79R6dbXHUGr7JPP/OmAsKBYZA0r/91a1XdFUDtRYZadstjcOv/X3QbeG3QqWOtNco+XgM7Q==} + /@aws-sdk/middleware-ssec@3.515.0: + resolution: {integrity: sha512-0qLjKiorosVBzzaV/o7MEyS9xqLLu02qGbP564Z/FZY74JUQEpBNedgveMUbb6lqr85RnOuwZ0GZ0cBRfH2brQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.511.0 + '@aws-sdk/types': 3.515.0 '@smithy/types': 2.9.1 tslib: 2.6.2 dev: false - /@aws-sdk/middleware-user-agent@3.511.0: - resolution: {integrity: sha512-eLs+CxP2QCXh3tCGYCdAml3oyWj8MSIwKbH+8rKw0k/5vmY1YJDBy526whOxx61ivhz2e0muuijN4X5EZZ2Pnw==} + /@aws-sdk/middleware-user-agent@3.515.0: + resolution: {integrity: sha512-nOqZjGA/GkjuJ5fUshec9Fv6HFd7ovOTxMJbw3MfAhqXuVZ6dKF41lpVJ4imNsgyFt3shUg9WDY8zGFjlYMB3g==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.511.0 - '@aws-sdk/util-endpoints': 3.511.0 + '@aws-sdk/types': 3.515.0 + '@aws-sdk/util-endpoints': 3.515.0 '@smithy/protocol-http': 3.1.1 '@smithy/types': 2.9.1 tslib: 2.6.2 dev: false - /@aws-sdk/region-config-resolver@3.511.0: - resolution: {integrity: sha512-RzBLSNaRd4iEkQyEGfiSNvSnWU/x23rsiFgA9tqYFA0Vqx7YmzSWC8QBUxpwybB8HkbbL9wNVKQqTbhI3mYneQ==} + /@aws-sdk/region-config-resolver@3.515.0: + resolution: {integrity: sha512-RIRx9loxMgEAc/r1wPfnfShOuzn4RBi8pPPv6/jhhITEeMnJe6enAh2k5y9DdiVDDgCWZgVFSv0YkAIfzAFsnQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.511.0 + '@aws-sdk/types': 3.515.0 '@smithy/node-config-provider': 2.2.1 '@smithy/types': 2.9.1 '@smithy/util-config-provider': 2.2.1 @@ -703,13 +704,13 @@ packages: tslib: 2.6.2 dev: false - /@aws-sdk/s3-request-presigner@3.511.0: - resolution: {integrity: sha512-CZRAA5Ru67DEStvz3i3yyS79oAPCXC5bqow5YWxAm6vkTydkA/Ybvim24T3EUDye6ParZvAtFhVV72odo5bitg==} + /@aws-sdk/s3-request-presigner@3.515.0: + resolution: {integrity: sha512-B6RcXWJTOHSqZDII/sYeM89MWc//AwA7iIcZk+oXyUSdVTl03z6raJMxWqY0dPx7KuBjLTnZPqUXKCCoQvnp/g==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/signature-v4-multi-region': 3.511.0 - '@aws-sdk/types': 3.511.0 - '@aws-sdk/util-format-url': 3.511.0 + '@aws-sdk/signature-v4-multi-region': 3.515.0 + '@aws-sdk/types': 3.515.0 + '@aws-sdk/util-format-url': 3.515.0 '@smithy/middleware-endpoint': 2.4.1 '@smithy/protocol-http': 3.1.1 '@smithy/smithy-client': 2.3.1 @@ -717,24 +718,24 @@ packages: tslib: 2.6.2 dev: false - /@aws-sdk/signature-v4-multi-region@3.511.0: - resolution: {integrity: sha512-lwbU3LX5TpYu1DHBMH2Wz+2MWGccn5G3psu1Y9WTPc+1bubVQHWf8UD2lzON5L2QirT9tQheQjTke1u5JC7FTQ==} + /@aws-sdk/signature-v4-multi-region@3.515.0: + resolution: {integrity: sha512-5lrCn4DSE0zL41k0L6moqcdExZhWdAnV0/oMEagrISzQYoia+aNTEeyVD3xqJhRbEW4gCj3Uoyis6c8muf7b9g==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/middleware-sdk-s3': 3.511.0 - '@aws-sdk/types': 3.511.0 + '@aws-sdk/middleware-sdk-s3': 3.515.0 + '@aws-sdk/types': 3.515.0 '@smithy/protocol-http': 3.1.1 '@smithy/signature-v4': 2.1.1 '@smithy/types': 2.9.1 tslib: 2.6.2 dev: false - /@aws-sdk/token-providers@3.511.0(@aws-sdk/credential-provider-node@3.511.0): - resolution: {integrity: sha512-92dXjMHBJcRoUkJHc0Bvtsz7Sal8t6VASRJ5vfs5c2ZpTVgLpVnM4dBmwUgGUdnvHov0cZTXbbadTJ/qOWx5Zw==} + /@aws-sdk/token-providers@3.515.0(@aws-sdk/credential-provider-node@3.515.0): + resolution: {integrity: sha512-MQuf04rIcTXqwDzmyHSpFPF1fKEzRl64oXtCRUF3ddxTdK6wxXkePfK6wNCuL+GEbEcJAoCtIGIRpzGPJvQjHA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/client-sso-oidc': 3.511.0(@aws-sdk/credential-provider-node@3.511.0) - '@aws-sdk/types': 3.511.0 + '@aws-sdk/client-sso-oidc': 3.515.0(@aws-sdk/credential-provider-node@3.515.0) + '@aws-sdk/types': 3.515.0 '@smithy/property-provider': 2.1.1 '@smithy/shared-ini-file-loader': 2.3.1 '@smithy/types': 2.9.1 @@ -744,8 +745,8 @@ packages: - aws-crt dev: false - /@aws-sdk/types@3.511.0: - resolution: {integrity: sha512-P03ufufxmkvd7nO46oOeEqYIMPJ8qMCKxAsfJk1JBVPQ1XctVntbail4/UFnrnzij8DTl4Mk/D62uGo7+RolXA==} + /@aws-sdk/types@3.515.0: + resolution: {integrity: sha512-B3gUpiMlpT6ERaLvZZ61D0RyrQPsFYDkCncLPVkZOKkCOoFU46zi1o6T5JcYiz8vkx1q9RGloQ5exh79s5pU/w==} engines: {node: '>=14.0.0'} dependencies: '@smithy/types': 2.9.1 @@ -759,21 +760,21 @@ packages: tslib: 2.6.2 dev: false - /@aws-sdk/util-endpoints@3.511.0: - resolution: {integrity: sha512-J/5hsscJkg2pAOdLx1YKlyMCk5lFRxRxEtup9xipzOxVBlqOIE72Tuu31fbxSlF8XzO/AuCJcZL4m1v098K9oA==} + /@aws-sdk/util-endpoints@3.515.0: + resolution: {integrity: sha512-UJi+jdwcGFV/F7d3+e2aQn5yZOVpDiAgfgNhPnEtgV0WozJ5/ZUeZBgWvSc/K415N4A4D/9cbBc7+I+35qzcDQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.511.0 + '@aws-sdk/types': 3.515.0 '@smithy/types': 2.9.1 '@smithy/util-endpoints': 1.1.1 tslib: 2.6.2 dev: false - /@aws-sdk/util-format-url@3.511.0: - resolution: {integrity: sha512-2BycrBtplIGAtzjj5YYLGrDBQDHR0zTct9bWBVhSfI0w2YAWAvxfRmXG4Dd1FF5ZxTm2xB9lA2u8FKim7ZKD8Q==} + /@aws-sdk/util-format-url@3.515.0: + resolution: {integrity: sha512-7BgmUldmECebZU2qUAxOoEkHnji5NZX/j6TcgY4xgl1tUycw72BeKdcQYLUt4YoXQmIGZHiBL8L/TfO48W+FpA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.511.0 + '@aws-sdk/types': 3.515.0 '@smithy/querystring-builder': 2.1.1 '@smithy/types': 2.9.1 tslib: 2.6.2 @@ -786,17 +787,17 @@ packages: tslib: 2.6.2 dev: false - /@aws-sdk/util-user-agent-browser@3.511.0: - resolution: {integrity: sha512-5LuESdwtIcA10aHcX7pde7aCIijcyTPBXFuXmFlDTgm/naAayQxelQDpvgbzuzGLgePf8eTyyhDKhzwPZ2EqiQ==} + /@aws-sdk/util-user-agent-browser@3.515.0: + resolution: {integrity: sha512-pTWQb0JCafTmLHLDv3Qqs/nAAJghcPdGQIBpsCStb0YEzg3At/dOi2AIQ683yYnXmeOxLXJDzmlsovfVObJScw==} dependencies: - '@aws-sdk/types': 3.511.0 + '@aws-sdk/types': 3.515.0 '@smithy/types': 2.9.1 bowser: 2.11.0 tslib: 2.6.2 dev: false - /@aws-sdk/util-user-agent-node@3.511.0: - resolution: {integrity: sha512-UopdlRvYY5mxlS4wwFv+QAWL6/T302wmoQj7i+RY+c/D3Ej3PKBb/mW3r2wEOgZLJmPpeeM1SYMk+rVmsW1rqw==} + /@aws-sdk/util-user-agent-node@3.515.0: + resolution: {integrity: sha512-A/KJ+/HTohHyVXLH+t/bO0Z2mPrQgELbQO8tX+B2nElo8uklj70r5cT7F8ETsI9oOy+HDVpiL5/v45ZgpUOiPg==} engines: {node: '>=14.0.0'} peerDependencies: aws-crt: '>=1.0.0' @@ -804,7 +805,7 @@ packages: aws-crt: optional: true dependencies: - '@aws-sdk/types': 3.511.0 + '@aws-sdk/types': 3.515.0 '@smithy/node-config-provider': 2.2.1 '@smithy/types': 2.9.1 tslib: 2.6.2 @@ -1245,38 +1246,10 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /@floating-ui/react@0.26.9(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-p86wynZJVEkEq2BBjY/8p2g3biQ6TlgT4o/3KgFKyTWoJLU1GZ8wpctwRqtkEl2tseYA+kw7dBAIDFcednfI5w==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - dependencies: - '@floating-ui/react-dom': 2.0.8(react-dom@18.2.0)(react@18.2.0) - '@floating-ui/utils': 0.2.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - tabbable: 6.2.0 - dev: false - /@floating-ui/utils@0.2.1: resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==} dev: false - /@headlessui/react@2.0.0-alpha.4(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-spykSTXskDUYjSFhdId97Bqclo1F9Ky2pgLmyNKdV4f7aRDncdc/mjMPx67eEWRN2xQobksaUCcnn5K/AcRXsg==} - engines: {node: '>=10'} - peerDependencies: - react: ^16 || ^17 || ^18 - react-dom: ^16 || ^17 || ^18 - dependencies: - '@floating-ui/react': 0.26.9(react-dom@18.2.0)(react@18.2.0) - '@react-aria/focus': 3.16.0(react@18.2.0) - '@react-aria/interactions': 3.0.0-nightly.2584(react@18.2.0) - '@tanstack/react-virtual': 3.0.0-beta.60(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@humanwhocodes/config-array@0.11.14: resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} @@ -1330,7 +1303,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.11.17 + '@types/node': 20.11.19 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 @@ -1351,14 +1324,14 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.17 + '@types/node': 20.11.19 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.11.17) + jest-config: 29.7.0(@types/node@20.11.19) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -1386,7 +1359,7 @@ packages: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.17 + '@types/node': 20.11.19 jest-mock: 29.7.0 dev: false @@ -1413,7 +1386,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.11.17 + '@types/node': 20.11.19 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -1446,7 +1419,7 @@ packages: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.22 - '@types/node': 20.11.17 + '@types/node': 20.11.19 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -1534,7 +1507,7 @@ packages: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.11.17 + '@types/node': 20.11.19 '@types/yargs': 17.0.32 chalk: 4.1.2 dev: false @@ -1584,8 +1557,8 @@ packages: - utf-8-validate dev: false - /@next/env@14.1.1-canary.56: - resolution: {integrity: sha512-2C+38wg1ZTb9N3HagtLZIjhPg0cbB97PmbgAKLMg+QOttyjmBiVjb231XWHKjqoEhY9u/ILWNbzgQ8gD5JplkA==} + /@next/env@14.1.1-canary.58: + resolution: {integrity: sha512-xMoPPiWVEIyIPoWaLhswlMq2Tnfkcv+XRmUAEhKkJgWdHIMFh45tiniWrZQLfrn4DAnF8gEAoejJaniNShFm7w==} dev: false /@next/eslint-plugin-next@14.1.0: @@ -1594,8 +1567,8 @@ packages: glob: 10.3.10 dev: false - /@next/swc-darwin-arm64@14.1.1-canary.56: - resolution: {integrity: sha512-xqCZidAakgTw0iQaWK3IRgbu1o8i2dRFjLkvAF1QPZruVFlSaCIKoSo3GUebJcrvzcHVzRkDKnr+FlWLmES5zA==} + /@next/swc-darwin-arm64@14.1.1-canary.58: + resolution: {integrity: sha512-exDpEe9ptK0NJEEyA+sThnR/6Oif/XaPK1y10fkcTNoQJkUCENL46nR1bCEYDAQrS5w03C1BHs3LSIOuoQcIag==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -1603,8 +1576,8 @@ packages: dev: false optional: true - /@next/swc-darwin-x64@14.1.1-canary.56: - resolution: {integrity: sha512-febsltDU+jnNhK3qZriJ58FSmyZtJkOtih5t0VDusgM8MdfwVfcfv0kMVSZOygdWrJLhml5OKBC4XdX4BDGpEw==} + /@next/swc-darwin-x64@14.1.1-canary.58: + resolution: {integrity: sha512-Q+38djBg+yaZjB8R6kst8kqHLIpTIM2RzuIvFGOflb8WaVI1ApXERTJKd345BOp42s0rIJ1UqynRplNCqYebeA==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -1612,8 +1585,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu@14.1.1-canary.56: - resolution: {integrity: sha512-4Zj09znOpXxU6y2BBVEo5jfa4aeiJVg5d4dbcAnuDL7n26xzQL62UOXflSLdijZ8842qcIUN5SQa1kqZlixj+w==} + /@next/swc-linux-arm64-gnu@14.1.1-canary.58: + resolution: {integrity: sha512-wv2457qPqh7ENqQ3t8sCWCsNStEW/o8qejZ6Ywdwl3eKP1jnFNtn4OWfOuP2FUl1XmVEzbABozuOyiCGAtD63Q==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -1621,8 +1594,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-musl@14.1.1-canary.56: - resolution: {integrity: sha512-CfDodJ/hjqdYYDpVZ0Jxjab8lmrl74Z3Y1tp12lzZA3jnrjXq66Wj8ckQ81H+Omn4ObovpMD+DRL8/xKXdC7HQ==} + /@next/swc-linux-arm64-musl@14.1.1-canary.58: + resolution: {integrity: sha512-xvfU/+mZfLpW/tRy743JtkNPlNI2t1dSkIzvDHHn/V28k1c+4YmsNxKMZRqqcxi73hwnuWYgor/96Sm4r9pmQQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -1630,8 +1603,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-gnu@14.1.1-canary.56: - resolution: {integrity: sha512-tHUaCQOaFxuUWR/7tvnFQTNOVKmmtKE2SdNfh5rzYz00JjYhVf3aR9hqOvCBmck0LJ77FmZK+8pBwUb8Jouz9g==} + /@next/swc-linux-x64-gnu@14.1.1-canary.58: + resolution: {integrity: sha512-OgayNv+ChIjsPYMkBit2LTI0tMJ72or4w5DfQe2i1M2Ccy09p/LSRCiOptkV3XKyO+Tz8+fAqN+PdLRxfxQiuQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1639,8 +1612,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-musl@14.1.1-canary.56: - resolution: {integrity: sha512-OEdHeNFb7BM+byb6JrpLF9/na2oCpxNbC6n+zQHcM/CV/y2OBniz9JDngckJG3esfnD6q9aCjEEt6LF9/LKZyw==} + /@next/swc-linux-x64-musl@14.1.1-canary.58: + resolution: {integrity: sha512-6epwXWxSUyNKzOt0FSRW0QioPaWA9xlu8LM5N0c9eg8vaI3FvZmQegtHIzuzNc7RyWE1a5ZY4uDBVA1JaUJRow==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1648,8 +1621,8 @@ packages: dev: false optional: true - /@next/swc-win32-arm64-msvc@14.1.1-canary.56: - resolution: {integrity: sha512-qWVDIia8BJ8209XUVw4QNPi4mup2OwRZVLlrD1WZwAmDGy5p/gwFqGCvQ5BeiCUl8Et9xWsVwou1/n5mobj0Dw==} + /@next/swc-win32-arm64-msvc@14.1.1-canary.58: + resolution: {integrity: sha512-Qa79WuVRcrkmbxzTXr/tmWvFHVMjUu9KpxNrKn+HO/DmrVEnR4NxmuzOOxc6QkCb+Rb86rfV7tttPQqw7YigBA==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -1657,8 +1630,8 @@ packages: dev: false optional: true - /@next/swc-win32-ia32-msvc@14.1.1-canary.56: - resolution: {integrity: sha512-e26LjHCGlg/X6iS5iqILGykgAFM+hLoNP1HTpsEXebn8iOaAJ4w2YEyk5+CGk4aImM9YwXGsquPWq/S+SwVMaQ==} + /@next/swc-win32-ia32-msvc@14.1.1-canary.58: + resolution: {integrity: sha512-fuqdt6XKc4kvUpgOMh/LL2eqJ/eltxknClpaAg9Nt0dGTQIF0rjKEVm8NRwv832URZKKBbz9AtBp5TEmOquG9g==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -1666,8 +1639,8 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc@14.1.1-canary.56: - resolution: {integrity: sha512-ylkY6s0wXjS8V7e7fFLtkT+VY0oLfZUDDdLPBL1hDxjh3m4H2kKB+Hq67fkRem7DoF3zn1pqCjbz4Gby/nXisg==} + /@next/swc-win32-x64-msvc@14.1.1-canary.58: + resolution: {integrity: sha512-P/DkKFiZo1mILb2UGt1YiurmuKo9LLvgC0l77YQ5g2b8jrTbYS9JeJJcdhLXnsHPPQrR/QgnEDJ2zWRtIhUJZA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -1711,123 +1684,473 @@ packages: resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} dev: false - /@react-aria/focus@3.16.0(react@18.2.0): - resolution: {integrity: sha512-GP6EYI07E8NKQQcXHjpIocEU0vh0oi0Vcsd+/71fKS0NnTR0TUOEeil0JuuQ9ymkmPDTu51Aaaa4FxVsuN/23A==} - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + /@radix-ui/primitive@1.0.1: + resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} dependencies: - '@react-aria/interactions': 3.20.1(react@18.2.0) - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) - '@swc/helpers': 0.5.6 - clsx: 2.1.0 + '@babel/runtime': 7.23.9 + dev: false + + /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.55 + '@types/react-dom': 18.2.19 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.55)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.55)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.55)(react@18.2.0) + '@types/react': 18.2.55 + '@types/react-dom': 18.2.19 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.55)(react@18.2.0): + resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@types/react': 18.2.55 react: 18.2.0 dev: false - /@react-aria/interactions@3.0.0-nightly.2584(react@18.2.0): - resolution: {integrity: sha512-6DqYQx8XnbCfIen33uLz4kdgevrXLW6aoxsBOTY/Mzq9n0LHzbG/5H87obrOxRNVYh62RcQolo/qfqEpXZ7bVA==} + /@radix-ui/react-context@1.0.1(@types/react@18.2.55)(react@18.2.0): + resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: - '@react-aria/ssr': 3.9.1-nightly.4295(react@18.2.0) - '@react-aria/utils': 3.0.0-nightly.2584(react@18.2.0) - '@react-types/shared': 3.0.0-nightly.2584(react@18.2.0) - '@swc/helpers': 0.5.6 + '@babel/runtime': 7.23.9 + '@types/react': 18.2.55 react: 18.2.0 dev: false - /@react-aria/interactions@3.20.1(react@18.2.0): - resolution: {integrity: sha512-PLNBr87+SzRhe9PvvF9qvzYeP4ofTwfKSorwmO+hjr3qoczrSXf4LRQlb27wB6hF10C7ZE/XVbUI1lj4QQrZ/g==} + /@radix-ui/react-direction@1.0.1(@types/react@18.2.55)(react@18.2.0): + resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==} peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: - '@react-aria/ssr': 3.9.1(react@18.2.0) - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) - '@swc/helpers': 0.5.6 + '@babel/runtime': 7.23.9 + '@types/react': 18.2.55 react: 18.2.0 dev: false - /@react-aria/ssr@3.9.1(react@18.2.0): - resolution: {integrity: sha512-NqzkLFP8ZVI4GSorS0AYljC13QW2sc8bDqJOkBvkAt3M8gbcAXJWVRGtZBCRscki9RZF+rNlnPdg0G0jYkhJcg==} - engines: {node: '>= 12'} + /@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==} peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true dependencies: - '@swc/helpers': 0.5.6 + '@babel/runtime': 7.23.9 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.55)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.55)(react@18.2.0) + '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.55)(react@18.2.0) + '@types/react': 18.2.55 + '@types/react-dom': 18.2.19 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-dropdown-menu@2.0.6(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.55)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.55)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.55)(react@18.2.0) + '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.55)(react@18.2.0) + '@types/react': 18.2.55 + '@types/react-dom': 18.2.19 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.55)(react@18.2.0): + resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@types/react': 18.2.55 react: 18.2.0 dev: false - /@react-aria/ssr@3.9.1-nightly.4295(react@18.2.0): - resolution: {integrity: sha512-cv0+RaS3LJeZiSJ4pVGqSAyiyL+rieLiR3ctyoU7EwkArY1W7fI3NSkMEbNhHe4YoqqjPy1ZzAcpSA11EceiBg==} - engines: {node: '>= 12'} + /@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==} peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true dependencies: - '@swc/helpers': 0.5.6 + '@babel/runtime': 7.23.9 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.55)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.55)(react@18.2.0) + '@types/react': 18.2.55 + '@types/react-dom': 18.2.19 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-id@1.0.1(@types/react@18.2.55)(react@18.2.0): + resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.55)(react@18.2.0) + '@types/react': 18.2.55 react: 18.2.0 dev: false - /@react-aria/utils@3.0.0-nightly.2584(react@18.2.0): - resolution: {integrity: sha512-A6NP3Yc9MMA+PiRBMTpMlx5plaiK7ejl3cppdkKiNPHtFmZrzxn6o9WHth4NToqIUkJRWHIrpTK8a/gBgVFPOg==} + /@radix-ui/react-menu@2.0.6(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==} peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true dependencies: - '@react-aria/ssr': 3.9.1-nightly.4295(react@18.2.0) - '@react-stately/utils': 3.0.0-nightly.2584(react@18.2.0) - '@react-types/shared': 3.0.0-nightly.2584(react@18.2.0) - '@swc/helpers': 0.5.6 - clsx: 1.2.1 + '@babel/runtime': 7.23.9 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.55)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.55)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.55)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.55)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.55)(react@18.2.0) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.55)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.55)(react@18.2.0) + '@types/react': 18.2.55 + '@types/react-dom': 18.2.19 + aria-hidden: 1.2.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.55)(react@18.2.0) + dev: false + + /@radix-ui/react-popper@1.1.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@floating-ui/react-dom': 2.0.8(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.55)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.55)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.55)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.55)(react@18.2.0) + '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.55)(react@18.2.0) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.55)(react@18.2.0) + '@radix-ui/rect': 1.0.1 + '@types/react': 18.2.55 + '@types/react-dom': 18.2.19 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-portal@1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.55 + '@types/react-dom': 18.2.19 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.55)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.55)(react@18.2.0) + '@types/react': 18.2.55 + '@types/react-dom': 18.2.19 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.55)(react@18.2.0) + '@types/react': 18.2.55 + '@types/react-dom': 18.2.19 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.55)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.55)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.55)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.55)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.19)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.55)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.55)(react@18.2.0) + '@types/react': 18.2.55 + '@types/react-dom': 18.2.19 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-slot@1.0.2(@types/react@18.2.55)(react@18.2.0): + resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.55)(react@18.2.0) + '@types/react': 18.2.55 react: 18.2.0 dev: false - /@react-aria/utils@3.23.0(react@18.2.0): - resolution: {integrity: sha512-fJA63/VU4iQNT8WUvrmll3kvToqMurD69CcgVmbQ56V7ZbvlzFi44E7BpnoaofScYLLtFWRjVdaHsohT6O/big==} + /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.55)(react@18.2.0): + resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: - '@react-aria/ssr': 3.9.1(react@18.2.0) - '@react-stately/utils': 3.9.0(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) - '@swc/helpers': 0.5.6 - clsx: 2.1.0 + '@babel/runtime': 7.23.9 + '@types/react': 18.2.55 react: 18.2.0 dev: false - /@react-stately/utils@3.0.0-nightly.2584(react@18.2.0): - resolution: {integrity: sha512-UOW2P+H3O7goB1mNEIwUdxr28CVHrKKvi+N1CQ0TGDwr+Bp6oIZK2aXE6aQluzgwZ36aRvLPW5dAoovpzTTcQQ==} + /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.55)(react@18.2.0): + resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: - '@swc/helpers': 0.5.6 + '@babel/runtime': 7.23.9 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.55)(react@18.2.0) + '@types/react': 18.2.55 react: 18.2.0 dev: false - /@react-stately/utils@3.9.0(react@18.2.0): - resolution: {integrity: sha512-yPKFY1F88HxuZ15BG2qwAYxtpE4HnIU0Ofi4CuBE0xC6I8mwo4OQjDzi+DZjxQngM9D6AeTTD6F1V8gkozA0Gw==} + /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.55)(react@18.2.0): + resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: - '@swc/helpers': 0.5.6 + '@babel/runtime': 7.23.9 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.55)(react@18.2.0) + '@types/react': 18.2.55 react: 18.2.0 dev: false - /@react-types/shared@3.0.0-nightly.2584(react@18.2.0): - resolution: {integrity: sha512-SVqvg7B3rtzN1ypQni5g6sfpUNf4wODRDtiOalBFSJ02YuaUIr7gXVjafPYIXOC1BkJbZtPun/Pv4mCwNHFNbA==} + /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.55)(react@18.2.0): + resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: + '@babel/runtime': 7.23.9 + '@types/react': 18.2.55 react: 18.2.0 dev: false - /@react-types/shared@3.22.0(react@18.2.0): - resolution: {integrity: sha512-yVOekZWbtSmmiThGEIARbBpnmUIuePFlLyctjvCbgJgGhz8JnEJOipLQ/a4anaWfzAgzSceQP8j/K+VOOePleA==} + /@radix-ui/react-use-rect@1.0.1(@types/react@18.2.55)(react@18.2.0): + resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: + '@babel/runtime': 7.23.9 + '@radix-ui/rect': 1.0.1 + '@types/react': 18.2.55 react: 18.2.0 dev: false + /@radix-ui/react-use-size@1.0.1(@types/react@18.2.55)(react@18.2.0): + resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.9 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.55)(react@18.2.0) + '@types/react': 18.2.55 + react: 18.2.0 + dev: false + + /@radix-ui/rect@1.0.1: + resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} + dependencies: + '@babel/runtime': 7.23.9 + dev: false + /@rushstack/eslint-patch@1.7.2: resolution: {integrity: sha512-RbhOOTCNoCrbfkRyoXODZp75MlpiHMgbE5MEBZAnnnLyQNgrigEj4p0lzsMDyc1zVsJDLrivB58tgg3emX0eEA==} dev: false @@ -2314,12 +2637,6 @@ packages: tslib: 2.6.2 dev: false - /@swc/helpers@0.5.6: - resolution: {integrity: sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==} - dependencies: - tslib: 2.6.2 - dev: false - /@tailwindcss/forms@0.5.7(tailwindcss@3.4.1): resolution: {integrity: sha512-QE7X69iQI+ZXwldE+rzasvbJiyV/ju1FGHH0Qn2W3FKbuYtqp8LKcy6iSw79fVUT5/Vvf+0XgLCeYVG+UV6hOw==} peerDependencies: @@ -2329,19 +2646,6 @@ packages: tailwindcss: 3.4.1 dev: false - /@tanstack/react-virtual@3.0.0-beta.60(react@18.2.0): - resolution: {integrity: sha512-F0wL9+byp7lf/tH6U5LW0ZjBqs+hrMXJrj5xcIGcklI0pggvjzMNW9DdIBcyltPNr6hmHQ0wt8FDGe1n1ZAThA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@tanstack/virtual-core': 3.0.0-beta.60 - react: 18.2.0 - dev: false - - /@tanstack/virtual-core@3.0.0-beta.60: - resolution: {integrity: sha512-QlCdhsV1+JIf0c0U6ge6SQmpwsyAT0oQaOSZk50AtEeAyQl9tQrd6qCHAslxQpgphrfe945abvKG8uYvw3hIGA==} - dev: false - /@testing-library/dom@9.3.4: resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} engines: {node: '>=14'} @@ -2384,7 +2688,7 @@ packages: chalk: 3.0.0 css.escape: 1.5.1 dom-accessibility-api: 0.6.3 - jest: 29.7.0(@types/node@20.11.17) + jest: 29.7.0(@types/node@20.11.19) lodash: 4.17.21 redent: 3.0.0 dev: false @@ -2448,7 +2752,7 @@ packages: /@types/graceful-fs@4.1.9: resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} dependencies: - '@types/node': 20.11.17 + '@types/node': 20.11.19 dev: false /@types/istanbul-lib-coverage@2.0.6: @@ -2477,7 +2781,7 @@ packages: /@types/jsdom@20.0.1: resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} dependencies: - '@types/node': 20.11.17 + '@types/node': 20.11.19 '@types/tough-cookie': 4.0.5 parse5: 7.1.2 dev: false @@ -2490,8 +2794,8 @@ packages: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: false - /@types/node@20.11.17: - resolution: {integrity: sha512-QmgQZGWu1Yw9TDyAP9ZzpFJKynYNeOvwMJmaxABfieQoVoiVOS6MN1WSpqpRcbeA5+RW82kraAVxCCJg+780Qw==} + /@types/node@20.11.19: + resolution: {integrity: sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ==} dependencies: undici-types: 5.26.5 dev: false @@ -2499,7 +2803,7 @@ packages: /@types/pg@8.6.6: resolution: {integrity: sha512-O2xNmXebtwVekJDD+02udOncjVcMZQuTEQEMpKJ0ZRf5E7/9JJX3izhKUcUifBkyKpljyUM6BTgy2trmviKlpw==} dependencies: - '@types/node': 20.11.17 + '@types/node': 20.11.19 pg-protocol: 1.6.0 pg-types: 2.2.0 dev: false @@ -2748,9 +3052,19 @@ packages: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: false - /@vercel/analytics@1.1.3: - resolution: {integrity: sha512-Z0l0y8TnUnnxr+on7oIMB9qQOoSJIniYMzUng6+NU8VVDkZ+kt2QGD5hzODwsuiRJAsjW528iUEtbWCEGkSCCg==} + /@vercel/analytics@1.2.0(next@14.1.1-canary.58)(react@18.2.0): + resolution: {integrity: sha512-Q9hduY6+i73Is1m57Y3OlawleeYVi4cvuh/0j6IwmSndMOE4+BKkMwjnwz+7xnqfZCanipIG6+q+zHalH9X0Zg==} + peerDependencies: + next: '>= 13' + react: ^18 || ^19 + peerDependenciesMeta: + next: + optional: true + react: + optional: true dependencies: + next: 14.1.1-canary.58(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 server-only: 0.0.1 dev: false @@ -2773,8 +3087,8 @@ packages: ws: 8.14.2(bufferutil@4.0.8)(utf-8-validate@6.0.3) dev: false - /@vercel/speed-insights@1.0.9(next@14.1.1-canary.56)(react@18.2.0): - resolution: {integrity: sha512-f+XFP0O+aZ4Olj9h+BitkB1b4NJQaxtyCb69wWuDxytJHY6Pa4QtZPdBUftHOcajUCHRVeq062fk3MKXKtjNVQ==} + /@vercel/speed-insights@1.0.10(next@14.1.1-canary.58)(react@18.2.0): + resolution: {integrity: sha512-4uzdKB0RW6Ff2FkzshzjZ+RlJfLPxgm/00i0XXgxfMPhwnnsk92YgtqsxT9OcPLdJUyVU1DqFlSWWjIQMPkh0g==} requiresBuild: true peerDependencies: '@sveltejs/kit': ^1 || ^2 @@ -2797,7 +3111,7 @@ packages: vue-router: optional: true dependencies: - next: 14.1.1-canary.56(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0) + next: 14.1.1-canary.58(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 dev: false @@ -2917,6 +3231,13 @@ packages: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: false + /aria-hidden@1.2.3: + resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==} + engines: {node: '>=10'} + dependencies: + tslib: 2.6.2 + dev: false + /aria-query@5.1.3: resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} dependencies: @@ -3333,11 +3654,6 @@ packages: wrap-ansi: 7.0.0 dev: false - /clsx@1.2.1: - resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} - engines: {node: '>=6'} - dev: false - /clsx@2.1.0: resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} engines: {node: '>=6'} @@ -3403,7 +3719,7 @@ packages: engines: {node: '>= 0.6'} dev: false - /create-jest@29.7.0(@types/node@20.11.17): + /create-jest@29.7.0(@types/node@20.11.19): resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -3412,7 +3728,7 @@ packages: chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.11.17) + jest-config: 29.7.0(@types/node@20.11.19) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -3584,6 +3900,10 @@ packages: engines: {node: '>=8'} dev: false + /detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + dev: false + /didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} dev: false @@ -4347,6 +4667,11 @@ packages: hasown: 2.0.0 dev: false + /get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + dev: false + /get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} @@ -4601,6 +4926,12 @@ packages: side-channel: 1.0.5 dev: false + /invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + dependencies: + loose-envify: 1.4.0 + dev: false + /is-arguments@1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} @@ -4901,7 +5232,7 @@ packages: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.17 + '@types/node': 20.11.19 chalk: 4.1.2 co: 4.6.0 dedent: 1.5.1 @@ -4922,7 +5253,7 @@ packages: - supports-color dev: false - /jest-cli@29.7.0(@types/node@20.11.17): + /jest-cli@29.7.0(@types/node@20.11.19): resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -4936,10 +5267,10 @@ packages: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.11.17) + create-jest: 29.7.0(@types/node@20.11.19) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@20.11.17) + jest-config: 29.7.0(@types/node@20.11.19) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -4950,7 +5281,7 @@ packages: - ts-node dev: false - /jest-config@29.7.0(@types/node@20.11.17): + /jest-config@29.7.0(@types/node@20.11.19): resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -4965,7 +5296,7 @@ packages: '@babel/core': 7.23.9 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.17 + '@types/node': 20.11.19 babel-jest: 29.7.0(@babel/core@7.23.9) chalk: 4.1.2 ci-info: 3.9.0 @@ -5031,7 +5362,7 @@ packages: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 '@types/jsdom': 20.0.1 - '@types/node': 20.11.17 + '@types/node': 20.11.19 jest-mock: 29.7.0 jest-util: 29.7.0 jsdom: 20.0.3 @@ -5048,7 +5379,7 @@ packages: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.17 + '@types/node': 20.11.19 jest-mock: 29.7.0 jest-util: 29.7.0 dev: false @@ -5064,7 +5395,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 20.11.17 + '@types/node': 20.11.19 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -5115,7 +5446,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.11.17 + '@types/node': 20.11.19 jest-util: 29.7.0 dev: false @@ -5170,7 +5501,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.17 + '@types/node': 20.11.19 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -5201,7 +5532,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.17 + '@types/node': 20.11.19 chalk: 4.1.2 cjs-module-lexer: 1.2.3 collect-v8-coverage: 1.0.2 @@ -5253,7 +5584,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.11.17 + '@types/node': 20.11.19 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -5278,7 +5609,7 @@ packages: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.17 + '@types/node': 20.11.19 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -5290,13 +5621,13 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.11.17 + '@types/node': 20.11.19 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: false - /jest@29.7.0(@types/node@20.11.17): + /jest@29.7.0(@types/node@20.11.19): resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -5309,7 +5640,7 @@ packages: '@jest/core': 29.7.0 '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.11.17) + jest-cli: 29.7.0(@types/node@20.11.19) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -5653,7 +5984,7 @@ packages: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: false - /next-auth@5.0.0-beta.9(next@14.1.1-canary.56)(react@18.2.0): + /next-auth@5.0.0-beta.9(next@14.1.1-canary.58)(react@18.2.0): resolution: {integrity: sha512-BWFiwJ/wzfxWpHnGpAoFsXHSlVofWgFns6tjtIGeDrXfEf3D+afnBpmzCNyek2RNYDVgMHi8Q5uXzFoNBd2l5g==} peerDependencies: '@simplewebauthn/browser': ^9.0.1 @@ -5670,24 +6001,24 @@ packages: optional: true dependencies: '@auth/core': 0.26.3 - next: 14.1.1-canary.56(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0) + next: 14.1.1-canary.58(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 dev: false - /next-themes@0.2.1(next@14.1.1-canary.56)(react-dom@18.2.0)(react@18.2.0): + /next-themes@0.2.1(next@14.1.1-canary.58)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==} peerDependencies: next: '*' react: '*' react-dom: '*' dependencies: - next: 14.1.1-canary.56(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0) + next: 14.1.1-canary.58(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /next@14.1.1-canary.56(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-/rqfqDzofP3xoOlGsRZXSc9eDBRn+f6UTIrJepappiFIJ2Bk54xVgQV+0HWG7szQoYt1tf+ZYCK1+h46/y5/oA==} + /next@14.1.1-canary.58(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-rL4Tmm5ldL4VA+lTz0sQfJcDOe3vXB7LItcWuILb8eDs/6X1wrXNF9KDtviJH0tq/jrrTOihN7aBCkkge85m6g==} engines: {node: '>=18.17.0'} hasBin: true peerDependencies: @@ -5701,7 +6032,7 @@ packages: sass: optional: true dependencies: - '@next/env': 14.1.1-canary.56 + '@next/env': 14.1.1-canary.58 '@swc/helpers': 0.5.5 busboy: 1.6.0 caniuse-lite: 1.0.30001585 @@ -5711,15 +6042,15 @@ packages: react-dom: 18.2.0(react@18.2.0) styled-jsx: 5.1.1(@babel/core@7.23.9)(react@18.2.0) optionalDependencies: - '@next/swc-darwin-arm64': 14.1.1-canary.56 - '@next/swc-darwin-x64': 14.1.1-canary.56 - '@next/swc-linux-arm64-gnu': 14.1.1-canary.56 - '@next/swc-linux-arm64-musl': 14.1.1-canary.56 - '@next/swc-linux-x64-gnu': 14.1.1-canary.56 - '@next/swc-linux-x64-musl': 14.1.1-canary.56 - '@next/swc-win32-arm64-msvc': 14.1.1-canary.56 - '@next/swc-win32-ia32-msvc': 14.1.1-canary.56 - '@next/swc-win32-x64-msvc': 14.1.1-canary.56 + '@next/swc-darwin-arm64': 14.1.1-canary.58 + '@next/swc-darwin-x64': 14.1.1-canary.58 + '@next/swc-linux-arm64-gnu': 14.1.1-canary.58 + '@next/swc-linux-arm64-musl': 14.1.1-canary.58 + '@next/swc-linux-x64-gnu': 14.1.1-canary.58 + '@next/swc-linux-x64-musl': 14.1.1-canary.58 + '@next/swc-win32-arm64-msvc': 14.1.1-canary.58 + '@next/swc-win32-ia32-msvc': 14.1.1-canary.58 + '@next/swc-win32-x64-msvc': 14.1.1-canary.58 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -6221,6 +6552,58 @@ packages: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: false + /react-remove-scroll-bar@2.3.4(@types/react@18.2.55)(react@18.2.0): + resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.55 + react: 18.2.0 + react-style-singleton: 2.2.1(@types/react@18.2.55)(react@18.2.0) + tslib: 2.6.2 + dev: false + + /react-remove-scroll@2.5.5(@types/react@18.2.55)(react@18.2.0): + resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.55 + react: 18.2.0 + react-remove-scroll-bar: 2.3.4(@types/react@18.2.55)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.55)(react@18.2.0) + tslib: 2.6.2 + use-callback-ref: 1.3.1(@types/react@18.2.55)(react@18.2.0) + use-sidecar: 1.1.2(@types/react@18.2.55)(react@18.2.0) + dev: false + + /react-style-singleton@2.2.1(@types/react@18.2.55)(react@18.2.0): + resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.55 + get-nonce: 1.0.1 + invariant: 2.2.4 + react: 18.2.0 + tslib: 2.6.2 + dev: false + /react@18.2.0: resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} engines: {node: '>=0.10.0'} @@ -6700,10 +7083,6 @@ packages: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: false - /tabbable@6.2.0: - resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} - dev: false - /tailwindcss@3.4.1: resolution: {integrity: sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==} engines: {node: '>=14.0.0'} @@ -6960,6 +7339,37 @@ packages: requires-port: 1.0.0 dev: false + /use-callback-ref@1.3.1(@types/react@18.2.55)(react@18.2.0): + resolution: {integrity: sha512-Lg4Vx1XZQauB42Hw3kK7JM6yjVjgFmFC5/Ab797s79aARomD2nEErc4mCgM8EZrARLmmbWpi5DGCadmK50DcAQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.55 + react: 18.2.0 + tslib: 2.6.2 + dev: false + + /use-sidecar@1.1.2(@types/react@18.2.55)(react@18.2.0): + resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.55 + detect-node-es: 1.1.0 + react: 18.2.0 + tslib: 2.6.2 + dev: false + /utf-8-validate@6.0.3: resolution: {integrity: sha512-uIuGf9TWQ/y+0Lp+KGZCMuJWc3N9BHA+l/UmHd/oUHwJJDeysyTRxNQVkbzsIWfGFbRe3OcgML/i0mvVRPOyDA==} engines: {node: '>=6.14.2'} diff --git a/src/admin/AdminPhotoMenuClient.tsx b/src/admin/AdminPhotoMenuClient.tsx index 1ac25252..bbe31808 100644 --- a/src/admin/AdminPhotoMenuClient.tsx +++ b/src/admin/AdminPhotoMenuClient.tsx @@ -1,13 +1,14 @@ 'use client'; import { ComponentProps } from 'react'; -import { pathForAdminPhotoEdit } from '@/site/paths'; -import MoreMenu from '../components/MoreMenu'; -import { toggleFavoritePhoto } from '@/photo/actions'; +import { pathForAdminPhotoEdit, pathForPhoto } from '@/site/paths'; +import { deletePhotoAction, toggleFavoritePhotoAction } from '@/photo/actions'; import { FaRegEdit, FaRegStar, FaStar } from 'react-icons/fa'; -import { Photo } from '@/photo'; +import { Photo, deleteConfirmationTextForPhoto } from '@/photo'; import { isPathFavs, isPhotoFav } from '@/tag'; import { usePathname } from 'next/navigation'; +import { BiTrash } from 'react-icons/bi'; +import MoreMenu from '@/components/MoreMenu'; export default function AdminPhotoMenuClient({ photo, @@ -17,29 +18,50 @@ export default function AdminPhotoMenuClient({ }) { const isFav = isPhotoFav(photo); const path = usePathname(); - const shouldRedirect = isPathFavs(path) && isFav; + const shouldRedirectFav = isPathFavs(path) && isFav; + const shouldRedirectDelete = pathForPhoto(photo.id) === path; return ( - , - href: pathForAdminPhotoEdit(photo.id), - }, { - label: isFav ? 'Unfavorite' : 'Favorite', - icon: isFav - ? + , + href: pathForAdminPhotoEdit(photo.id), + }, { + label: isFav ? 'Unfavorite' : 'Favorite', + icon: isFav + ? + : , + action: () => toggleFavoritePhotoAction( + photo.id, + shouldRedirectFav, + ), + }, { + label: 'Delete', + icon: - : , - action: () => toggleFavoritePhoto(photo.id, shouldRedirect), - }, - ], - ...props, - }}/> + action: () => { + if (confirm(deleteConfirmationTextForPhoto(photo))) { + return deletePhotoAction( + photo.id, + photo.url, + shouldRedirectDelete, + ); + } + }, + }, + ], + ...props, + }}/> + ); } diff --git a/src/app/admin/photos/page.tsx b/src/app/admin/photos/page.tsx index f88d3b4f..05095329 100644 --- a/src/app/admin/photos/page.tsx +++ b/src/app/admin/photos/page.tsx @@ -5,14 +5,16 @@ import PhotoTiny from '@/photo/PhotoTiny'; import { clsx } from 'clsx/lite'; import FormWithConfirm from '@/components/FormWithConfirm'; import SiteGrid from '@/components/SiteGrid'; -import { deletePhotoAction, syncPhotoExifDataAction } from '@/photo/actions'; +import { + deletePhotoFormAction, + syncPhotoExifDataAction, +} from '@/photo/actions'; import { pathForAdminPhotos, pathForPhoto, pathForAdminPhotoEdit, } from '@/site/paths'; -import { titleForPhoto } from '@/photo'; -import MoreComponentsClient from '@/components/MoreComponentsClient'; +import { deleteConfirmationTextForPhoto, titleForPhoto } from '@/photo'; import { getPhotosCached, getPhotosCountIncludingHiddenCached, @@ -30,6 +32,7 @@ import { PRO_MODE_ENABLED } from '@/site/config'; import SubmitButtonWithStatus from '@/components/SubmitButtonWithStatus'; import IconGrSync from '@/site/IconGrSync'; import { getStoragePhotoUrlsNoStore } from '@/services/storage/cache'; +import MoreComponentsClient from '@/components/MoreComponentsClient'; const DEBUG_PHOTO_BLOBS = false; @@ -131,10 +134,8 @@ export default async function AdminPhotosPage({ /> diff --git a/src/components/MoreMenu.tsx b/src/components/MoreMenu.tsx index 0e55721c..50857a4e 100644 --- a/src/components/MoreMenu.tsx +++ b/src/components/MoreMenu.tsx @@ -1,8 +1,8 @@ -import { clsx} from 'clsx/lite'; -import Link from 'next/link'; -import { Menu } from '@headlessui/react'; +import React, { ReactNode, useState } from 'react'; +import * as DropdownMenu from '@radix-ui/react-dropdown-menu'; +import clsx from 'clsx'; import { FiMoreHorizontal } from 'react-icons/fi'; -import { Fragment, ReactNode, useState } from 'react'; +import Link from 'next/link'; export default function MoreMenu({ items, @@ -13,26 +13,13 @@ export default function MoreMenu({ label: ReactNode, icon?: ReactNode, href?: string, - action?: () => Promise, + action?: () => Promise | void, }[] className?: string buttonClassName?: string -}) { +}){ const [isLoading, setIsLoading] = useState(false); - const itemClass = clsx( - 'block w-full', - 'border-none min-h-0 bg-transparent', - 'text-sm text-main text-left', - 'px-3 py-1.5 rounded-[3px]', - 'hover:text-main', - 'hover:bg-gray-50 active:bg-gray-100', - 'hover:dark:bg-gray-900/75 active:dark:bg-gray-900', - 'whitespace-nowrap', - 'shadow-none', - isLoading && 'cursor-not-allowed opacity-50', - ); - const renderItemContent = ( label: ReactNode, icon?: ReactNode, @@ -43,57 +30,77 @@ export default function MoreMenu({ ; return ( -
- - + + + + + + {items.map(({ label, icon, href, action }) => - { + const result = action?.(); + if (result instanceof Promise) { + e.preventDefault(); + setIsLoading(true); + result.finally(() => setIsLoading(false)); + } + }} > <> {href && {renderItemContent(label, icon)} } {action && - } + renderItemContent(label, icon)} - + )} - - -
+ + + ); -} +}; diff --git a/src/photo/PhotoGrid.tsx b/src/photo/PhotoGrid.tsx index f24f0e97..cd77b495 100644 --- a/src/photo/PhotoGrid.tsx +++ b/src/photo/PhotoGrid.tsx @@ -57,7 +57,7 @@ export default function PhotoGrid({ 'aspect-square', 'overflow-hidden', '[&>*]:flex [&>*]:w-full [&>*]:h-full', - '[&>*>*]:object-cover [&>*>*]:min-h-full', + '[&>*>*]:object-cover', ) : undefined} style={{ diff --git a/src/photo/PhotoSmall.tsx b/src/photo/PhotoSmall.tsx index 810c3a32..b560de25 100644 --- a/src/photo/PhotoSmall.tsx +++ b/src/photo/PhotoSmall.tsx @@ -5,6 +5,8 @@ import { clsx } from 'clsx/lite'; import { pathForPhoto } from '@/site/paths'; import { Camera } from '@/camera'; import { FilmSimulation } from '@/simulation'; +import AdminPhotoMenu from '@/admin/AdminPhotoMenu'; +import { Suspense } from 'react'; export default function PhotoSmall({ photo, @@ -12,21 +14,34 @@ export default function PhotoSmall({ camera, simulation, selected, + showAdminMenu, }: { photo: Photo tag?: string camera?: Camera simulation?: FilmSimulation selected?: boolean + showAdminMenu?: boolean }) { return ( + + {showAdminMenu && + } + ? `(${count} ${photoLabelForCount(count)})` : `${count} ${photoLabelForCount(count)}`; +export const deleteConfirmationTextForPhoto = (photo: Photo) => + `Are you sure you want to delete "${titleForPhoto(photo)}?"`; + export type PhotoDateRange = { start: string, end: string }; export const descriptionForPhotoSet = (